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+" "+"这个是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