简体   繁体   中英

How do I use the “this” keyword in java?

我一直在使用多种方法,但是我的“java 完整参考”一书并没有很好地解释如何使用“this”关键字。

this in java

It is used to refer to the data members of the object in the envoked method or constructor in case there is a name conflict between fields and local variables

    public class Test {
    String s;
    int i; 
    public Test(String s, int i){
        this.s = s;
        this.i = i;
    } }

It is used to invoke one constructor from another constructor of the same class or you can say constructor chaining.

public class ConstructorChainingEg{
    String s;
    int i;
    public ConstructorChainingEg(String s, int i){
        this.s = s;
        this.i = i;
        System.out.println(s+" "+i);
    }
    public ConstructorChainingEg(){
        this("abc",3); // from here call goes to parameterized constructor
    }

    public static void main(String[] args) {
       ConstructorChainingEg m = new ConstructorChainingEg();
      // call goes to default constructor
    }
}

It also facilitates method chaining

class Swapper{
    int a,b;
    public Swapper(int a,int b){
        this.a=a;
        this.b=b;
    }
    public Swapper swap() {
        int c=this.a;
        this.a=this.b;
        this.b=c;
        return this;
    }
    public static void main(String aa[]){
        new Swapper(4,5).swap(); //method chaining
    }
}

Here's a couple:

public class Example {
    private int a;
    private int b;

    // use it to differentiate between local and class variables
    public Example(int a, int b) {
        this.a = a;
        this.b = b;
    }

    // use it to chain constructors
    public Example() {
        this(0, 0);
    }

    // revised answer:
    public int getA() {
        return this.a;
    }

    public int getB() {
        return this.b
    }

    public int setA(int a) {
        this.a = a
    }

    public void setB(int b) {
        this.b = b;
    }
}

this refers to the attributes that belong to the object in which this is used in. For example:

Example ex1 = new Example(3,4);
Example ex2 = new Example(8,1);

In these cases, ex1.getA() will return 3, because this is referring to the a that belongs to the object named ex1 , and not ex2 or anything else. The same goes for ex2.getB() .

If you look at the setA() and setB() methods, using this distinguishes the attributes a and b belonging to the object from the parameter names as they're the same.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM