1. 程式人生 > >this在java中的用法

this在java中的用法

this在java中的用法

1.使用this關鍵字引用成員變數

作用:解決成員變數與引數或區域性變數命名衝突的問題

public class Dog {
    String name;
    public Dog(String name) {
        this.name = name;
    }
}

2.使用this關鍵字引用成員函式。在方法中引用呼叫該方法的物件

作用:讓類中一個方法,訪問該類的另一個方法或例項變數

class Dog {
    public void jump() {
        System.out.println("正在執行jump方法");
    }
    public void run() {
        Dog d = new Dog();
        d.jump();
        System.out.println("正在執行run方法");
    }
}

public class DogTest {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.run();
    }
}

Dog類中run方法呼叫jump方法一定要通過物件呼叫,因為jump方法並沒有被static修飾。但不必在run()方法中重新定義一個Dog類,因為DogTest類中當程式呼叫run()方法時,一定會提供一個Dog物件,這樣就可以直接使用這個已經存在的Dog物件,而無須建立新的Dog物件。
因此通過this關鍵字就可以在run()方法中呼叫該方法的物件

public void run(){
    this.jump();//Java允許省略this字首,即可直接寫成jump();
    System.out.println("正在執行run方法");
}

static修飾的方法中不能使用this引用


例如:

public class DogTest {
    public void dog() {
        System.out.println("汪汪汪");
    }
    public static void main(String[] args){
        this.dog(); //報錯:Cannot use this in a static context。
                       //省略掉this的情況下:同樣報錯,因為在靜態方法中,不能直接訪問非靜態成員(包括方法和變數)。非靜態的變數是依賴於物件存在的,物件必須例項化之後,它的變數才會在記憶體中存在。 
                        //解決辦法:法1.將dog()同樣設定為靜態  法2.先例項化物件,然後使用物件來呼叫函式
    }
}

3.使用this關鍵字在自身構造方法內部引用其它構造方法

在某個構造方法內使用this(引數列表),即可跳轉到其他構造方法

4.用this關鍵字代表自身類的物件

return this 即代表return整個自身類