java中this的用法如:this.name=name

package com.chensi;

/**
 *  这个是为了搞懂那个  this.name = name的。
 * @author ZHL
 *
 */
public class ThisTestZhl {

    private int i = 0;

    private String s = "zhl";
    //第一个构造器
    ThisTestZhl(int i){
        System.out.println("第一个构造器");
        //这时候的this。i 表示的是成员变量的i 是0,然后this。i = i ;这时候成员变类被局部变量赋值了
        System.out.println("这个是this。i--"+(this.i));
        System.out.println("这个是i--"+i);
        System.out.println("----------");
        this.i = i;
        System.out.println("这个是i--"+i+"\n"+"这个是this。i--"+(this.i));
        System.out.println("*********");
        System.out.println("this.i----"+(this.i));
    }
    //第二个构造器
    ThisTestZhl(String s){
        System.out.println("第二个构造器");
        System.out.println("s--"+s);
        System.out.println("this.s---"+(this.s));
        this.s = s;
        System.out.println("---------");
        System.out.println("字符串构造器"+s);
        System.out.println("字符串构造器this.s--"+(this.s));
    }
    //第三个构造器 ,带有两个参数的构造器
    ThisTestZhl(int i ,String s){
        //this(i);
        this(s);
        System.out.println("第三个构造器");
    }

    public ThisTestZhl increment(){
        System.out.println("入口");
        System.out.println("入口 i---"+i);
        System.out.println("入口 this.i ---"+(this.i));
        this.i++;
        System.out.println("出口 i---"+i);
        System.out.println("出口 this.i ---"+(this.i));
        return this;
    }

    public static void main(String[] args) {
        ThisTestZhl tto = new ThisTestZhl(10);
        //ThisTestZhl tto2 = new ThisTestZhl("豆豆");
        //ThisTestZhl tto3 = new ThisTestZhl(10,"chensi");
        System.out.println(tto.increment().increment().increment().i);
        //tto.increment();
    }

    /* this: 通过this可以调用本类的构造方法,成员变量,成员方法
     * this() 调用构造方法
     * this.变量名  调用成员变量
     * this.方法名 调用成员方法
     */

    /*
     *  

        细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:

        1、表示对当前对象的引用!

        2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

        3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

        还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

        说明在什么情况下需要用到this:
                第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
                第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。
                            当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
                第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
                            其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
         */

}

结果:

第一个构造器
这个是this。i--0
这个是i--10
----------
这个是i--10
这个是this。i--10
*********
this.i----10
入口
入口 i---10
入口 this.i ---10
出口 i---11
出口 this.i ---11
入口
入口 i---11
入口 this.i ---11
出口 i---12
出口 this.i ---12
入口
入口 i---12
入口 this.i ---12
出口 i---13
出口 this.i ---13
13

时间: 2024-10-09 19:55:20

java中this的用法如:this.name=name的相关文章

java中stringBuilder的用法

java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的

Java中输入的用法

Java中输入 1. 读取输入 1)构建一个Scanner,附属到System.in Scanner in = new Scanner(System.in); 此时可以使用Scanner类的各种方法来读取输入.例如:nextLine方法来读取一行输入 System.out.print("What is your name?"); String name = in.nextLine(); nextLine():    读取的一行中可能包含空格 next():           读取单个

Java中List的用法

List接口对Collection进行了简单的扩充. 它的具体实现类常用的有ArrayList和LinkedList. ArrayList从其命名中可以看出它是以一种类似数组的形式存储,因此它的随机访问速度极快,但插入和移除元素的速度很慢. LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作,不适合随机访问,LinkedList可以当作堆栈.队列和双向队列使用. 一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插

跟王老师学集合(十一)java中Comparator的用法

Java中Comparator的用法 主讲人:王少华  QQ群号:483773664 在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package chapter07_11; public class Person {     private int a

关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("如今时间

java成神之——java中string的用法

java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取指定位置字符和replace的使用 StringBuffer的使用 字符串转换 基本类型的转换 添加字符编码 Base64的编码和解码 结语 java中String的用法 String基本用法 字符串一旦创建在堆中就不可变 字符串声明 String str = "你好"; String s

Java中System.setProperty()用法

Java中System.setProperty()用法 /* * 设置指定键对值的系统属性 * setProperty (String prop, String value); *  * 参数: * prop - 系统属性的名称. * value - 系统属性的值.   *  * 返回: * 系统属性以前的值,如果没有以前的值,则返回 null. *  * 抛出:   * SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置指定属性. 

Java中Synchronized的用法

版权声明:本文为博主原创文章,未经博主允许不得用于任何商业用途,转载请注明出处. 目录(?)[+] 原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)--以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java线程同步中的一个重要的概念synchronized. synchro

Java中Class.forName()用法详解

Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段. 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法. 一.什么时候用Class.forName()? 给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点: A a = (A)Class.for

Java中getResourceAsStream的用法

首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从 ClassPath根下获取.其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源. 2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,pa