zoukankan      html  css  js  c++  java
  • 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;  返回的是对象本身。一定要与对象引用区分开来。

  • 相关阅读:
    494 Target Sum 目标和
    493 Reverse Pairs 翻转对
    492 Construct the Rectangle 构建矩形
    491 Increasing Subsequences 递增子序列
    488 Zuma Game 祖玛游戏
    486 Predict the Winner 预测赢家
    485 Max Consecutive Ones 最大连续1的个数
    483 Smallest Good Base
    Django Form组件
    Django Auth组件
  • 原文地址:https://www.cnblogs.com/bulrush/p/8940503.html
Copyright © 2011-2022 走看看