java中this的使用

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

总结下来:this有4种用法。

  1):代表成员变量。也就是属性。this.i=i. 把形参赋值给当前属性。

  2):this(i) 放在构造器的第一位,去调用另外的一个构造器。i  代表调用的那个构造器的参数。

  3):调用别的方法。一般都直接写方法名了。

  4):return this;  返回的是对象本身。一定要与对象引用区分开来。

posted @ 2018-04-25 10:24  陆伟  阅读(205)  评论(0编辑  收藏  举报