Java麵向對象基礎--this關鍵字的解析
this關鍵字的作用:
1、表示類中的屬性。
class Person{ // 定義Person類 private String name ; // 姓名 private int age ; // 年齡 public Person(String name,int age){ // 通過構造方法賦值 this.name = name ; // 為類中的name屬性賦值 this.age = age ;// 為類中的age屬性賦值 } public String getInfo(){ // 取得信息的方法 return "姓名:" + name + ",年齡:" + age ; } }; public class ThisDemo02{ public static void main(String args[]){ Person per1 = new Person("張三",33) ; // 調用構造實例化對象 System.out.println(per1.getInfo()) ; // 取得信息 } };
2、使用this調用本類的構造方法。
構造方法間可以互相調用,使用this(參數)的形式完成。
注意:在使用this關鍵字調用其他構造方法時,this()調用構造方法的語句隻能放在構造方法的首行。
在使用this調用本類中的其他構造方法是,至少有一個構造方法是不用this調用的,以防止遞歸調用的情況出現。
class Person{ // 定義Person類 private String name ; // 姓名 private int age ; // 年齡 public Person(){ // 無參構造 System.out.println("新對象實例化") ; } public Person(String name){ this() ;// 調用本類中的無參構造方法 this.name = name ; } public Person(String name,int age){ // 通過構造方法賦值 this(name) ;// 調用有一個參數的構造方法 this.age = age ;// 為類中的age屬性賦值 } public String getInfo(){ // 取得信息的方法 return "姓名:" + name + ",年齡:" + age ; } }; public class ThisDemo05{ public static void main(String args[]){ Person per1 = new Person("張三",33) ; // 調用構造實例化對象 System.out.println(per1.getInfo()) ; // 取得信息 } };
3、表示當前對象。
使用this和引用傳遞比較兩個對象是否相等。
String本身是一個類,進行相等的比較,則要判斷內容,使用equals()方法來完成。
age是int類型,使用 == 即可。
地址相等,則兩個對象相等。地址如果不相等,一次判斷屬性內容是否相等。
class Person{ // 定義Person類 private String name ; // 姓名 private int age ; // 年齡 public Person(String name,int age){ this.setName(name) ; this.setAge(age) ; } public boolean compare(Person per){ // 調用此方法時裏麵存在兩個對象:當前對象、傳入的對象 Person p1 = this ; // 當前的對象,就表示per1 Person p2 = per ; // 傳遞進來的對象,就表示per2 if(p1==p2){ // 判斷是不是同一個對象,用地址比較 return true ; } // 之後分別判斷每一個屬性是否相等 if(p1.name.equals(p2.name)&&p1.age==p2.age){ return true ; // 兩個對象相等 }else{ return false ; // 兩個對象不相等 } } public void setName(String name){ // 設置姓名 this.name = name ; } public void setAge(int age){ // 設置年齡 this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } }; public class ThisDemo08{ public static void main(String args[]){ Person per1 = new Person("張三",30) ; // 聲明兩個對象,內容完全相等 Person per2 = new Person("張三",30) ; // 聲明兩個對象,內容完全相等 // 直接在主方法中依次取得各個屬性進行比較 if(per1.compare(per2)){ System.out.println("兩個對象相等!") ; }else{ System.out.println("兩個對象不相等!") ; } } };
最後更新:2017-04-03 15:21:43