this關鍵字根據所在位置的不同,引用不同
1:在構造器執行體裏。
我們通過代碼說明:
public class Test {
private int height;
public Test(int height){
this. height=height;
}
public static void main(String args[]){
Test test=new Test(15);
}
}
在構造器裏,this引用構造器正在初始化的對象。
2:在方法執行體裏。
this引用,調用該方法的對象。
我們通過代碼說明:
public class Test {
public void run(){
System. out.println( "執行run方法");
}
public void runTwo(){
//在runTwo方法中調用run方法
this.run();
System. out.println( "執行runTwo方法" );
}
public static void main(String args[]){
Test test= new Test();
test.runTwo();
}
}
在runTwo方法中通過this調用另一個方法run,this在這個方法執行體裏指向調用runTwo方法的對象。
當兩個方法有依賴關係時可以省略this
代碼如下:
public class Test {
public void run (){
System. out.println( "執行run方法");
}
public void runTwo(){
//在runTwo方法中調用run方法
run();
System. out.println( "執行runTwo方法" );
}
public static void main(String args[]){
Test test= new Test();
test.runTwo();
}
}
在靜態方法中不可以使用this關鍵字,因爲調用靜態方法的是類,雖然可以通過實例調用靜態方法,但是在底層的運行中還是通過該實例的所屬類調用這個靜態方法,所以this不能指向有效的對象,將出現錯誤。