java This的用法

  用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是够也应该有一个引用来访问自己的属性和方法纳?呵呵,Java提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法。

1) this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性;  

2)可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数;


[java] view plain copy  print?
  1. <span style="font-size:12px;">public class ThisTest {  
  2.   
  3.     private int i=0;  
  4.   
  5.     //第一个构造器:有一个int型形参  
  6.   
  7.     ThisTest(int i){  
  8.   
  9.        this.i=i+1;//此时this表示引用成员变量i,而非函数参数i  
  10.   
  11.        System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);  
  12.   
  13.        System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));  
  14.   
  15.        //从两个输出结果充分证明了i和this.i是不一样的!  
  16.   
  17.     }  
  18.   
  19.     //  第二个构造器:有一个String型形参  
  20.   
  21.     ThisTest(String s){  
  22.   
  23.        System.out.println("String constructor:  "+s);  
  24.   
  25.     }  
  26.   
  27.     //  第三个构造器:有一个int型形参和一个String型形参  
  28.   
  29.     ThisTest(int i,String s){  
  30.   
  31.        this(s);//this调用第二个构造器  
  32.   
  33.        //this(i);  
  34.   
  35.        /*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。 
  36.  
  37.        但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调 
  38.  
  39.        用一个且仅一次构造器!*/  
  40.   
  41.        this.i=i++;//this以引用该类的成员变量  
  42.   
  43.        System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);  
  44.   
  45.     }  
  46.   
  47.     public ThisTest increment(){  
  48.   
  49.        this.i++;  
  50.   
  51.        return this;//返回的是当前的对象,该对象属于(ThisTest)  
  52.   
  53.     }  
  54.   
  55.     public static void main(String[] args){  
  56.   
  57.        ThisTest tt0=new ThisTest(10);  
  58.   
  59.        ThisTest tt1=new ThisTest("ok");  
  60.   
  61.        ThisTest tt2=new ThisTest(20,"ok again!");  
  62.   
  63.         
  64.   
  65.        System.out.println(tt0.increment().increment().increment().i);  
  66.   
  67.        //tt0.increment()返回一个在tt0基础上i++的ThisTest对象,  
  68.   
  69.        //接着又返回在上面返回的对象基础上i++的ThisTest对象!  
  70.   
  71.     }  
  72.   
  73. }</span>  

运行结果:

[java] view plain copy  print?
  1. <span style="font-size:12px;">Int constructor i——this.i:  10——11  
  2.   
  3. String constructor:  ok  
  4.   
  5. String constructor:  ok again!  
  6.   
  7. Int constructor:  21  
  8.   
  9. String constructor:  ok again!  
  10.   
  11. 14</span>  
总结一下,其实this主要要三种用法:

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

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

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

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


转载:http://blog.csdn.net/chaoyu168/article/details/49795651

上一篇:Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)


下一篇:WiFi步入60GHz时代:助力4K、VR和物联网