爲了程序的可讀性,通常將一個類中的表示同一屬性的變量進行統一的命名,但是這樣做又會導致成員變量與局部變量名字衝突導致無法訪問成員變量,爲了解決這個問題,java中引入了this這個關鍵字!所以this 的作用就是用於在方法中訪問對象的其他成員!
this關鍵字有以下三種常見用法:
1)通過this關鍵字可以明確的訪問成員變量,解決與局部變量重名的矛盾!(成員變量與局部變量衝突的時候)
class Student{
int id;
public Student(int id){
this.id=id;
}
public int getId(){
return this.id;
}
}
構造方法中的參數是id,它是一個局部變量與成員變量id重名。通常在構造方法中使用this.id訪問成員變量,通過id訪問構造方法中的內部變量!
2)通過this 關鍵字可以調用成員方法!(多個成員方法的時候)
class Person{
public void eat{
...
}
public void behavior{
this.eat();
...
}
}
在一個類中有多個成員方法的時候,通過this關鍵字可以方便的實現在一個成員方法中調用另一個成員方法!
3)構造方法是在實例化對象的時候被java虛擬機自動調用的,在程序中無法像調用一般成員方法一樣調用構造方法,但是可以通過在一個構造方法中使用this(參數1,參數2,參數3。。。)的形式來調用其他的構造方法!(多個構造方法的時候)
class Student{
public Student(){
System.out.print("訪問了無參構造方法!");
}
public Student(String id){
this();
System.out.println("訪問了有參構造方法!");
}
}
public class eg{
public static void main(String[] args){
Student s=new Student(3);//實例化對象的時候
}
}
但是使用第三種的時候需要注意一些問題:
<1> this()的調用必須放在第一行,而且只能出現一次!
<2>this()的調用只能是在構造方法中調用另一個構造方法,不能再成員方法中調用構造方法!
<3>不能在一個類的兩個構造方法中使用this互相調用!這樣叫容易造成死循環!