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;  返回的是对象本身。一定要与对象引用区分开来。

  • 相关阅读:
    Lesson 2 :
    Session 1 : 笔记
    SpringBoot 3 : 单元测试和开发环境调试
    SpringBoot 2 : 网络配置
    MS leetcode 题目
    研二上末
    时不我待
    Do, I do!
    LeetCode 精选 TOP 面试题
    基于attractor landscape研究疾病发展及药物研发
  • 原文地址:https://www.cnblogs.com/bulrush/p/8940503.html
Copyright © 2011-2022 走看看