this:是和特定对象关联的引用。
是调用方法的对象的引用,this 用法和其他对象引用并无不同。
this 在方法内 使用,表示对 调用方法的对象 的引用
当需要明确指出 对当前对象的引用时,才使用this关键字。
this —— 这个对象、当前对象(类型是引用,其实,因为是在堆上new的对象,对对象的操作永远都只能是引用。一切对象皆是引用。一旦哪个对象没有引用了,就可能要被销毁了)
理解了this,有助于 对比理解static:
static的方法就是没有this的方法。(上面说了,this是和对象(的引用)关联,即和某一个具体对象相关!)
static里不能含this,因为static可以用类名来调用,即可能连一个对象都没有创建的时候,就能用static, 如果static方法里含this了,那么this指的那个对象在哪里呢?? 就会矛盾了!
一个是和类相关的,一个是和具体对象相关的!
它们就是一对儿。
初始化:——(先指定初始化/自动初始化,自动初始化在构造器调用之前)构造器初始化 方便灵活
指定/自动初始化顺序 取决变量于定义的顺序。
关于this构造器 参考代码
public class ThisTest { private int i=0; //第一个构造器:有一个int型形参 ThisTest(int i){ this.i=i+1;//此时this表示引用成员变量i,而非函数参数i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //从两个输出结果充分证明了i和this.i是不一样的! } // 第二个构造器:有一个String型形参 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三个构造器:有一个int型形参和一个String型形参 ThisTest(int i,String s){ this(s);//this调用第二个构造器 //this(i); this.i=i++;//this以引用该类的成员变量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment(){ this.i++; return this;//返回的是当前的对象,该对象属于(ThisTest) } public static void main(String[] args){ ThisTest tt0=new ThisTest(10); ThisTest tt1=new ThisTest("ok"); ThisTest tt2=new ThisTest(20,"ok again!"); System.out.println(tt0.increment().increment().increment().i); //tt0.increment()返回一个在tt0基础上i++的ThisTest对象, //接着又返回在上面返回的对象基础上i++的ThisTest对象! } }