標籤:nbsp str tin als ctr div package 建立 else
java學習中,object 對象的使用(java 學習中的小記錄)王可利(Star·星星)
object 對象(參考API學習)
重點掌握三個方法:
1.toString 返回該對象的字串表示。
2.equals(object obj)指示其他某個對象是否與這個對象相等。
3.hashCode() 返回對象的雜湊碼。
詳見代碼的注釋分析(一個是Person類重寫方法,一個是Star類使用方法)
Star類代碼:
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 6 //建立object對象 7 Object o = new Object(); 8 9 //1.toString10 String str = o.toString();11 System.out.println(str);//[email protected] 列印的是類的全名+地址12 System.out.println(o);//[email protected] 13 //println(object o) 內部實現應該是 o.toString14 //Ctrl + 滑鼠左鍵看源碼 ,源碼的包是 src壓縮包 jdk裡面15 16 //需求:有一個Person類 有兩個屬性name、age,現在想要在列印Person對象的時候直接輸出name和age。17 Person p = new Person("星星",12);18 System.out.println(p);19 //列印上面的類的全名+地址 沒有什麼意義20 //一般在類中都會重寫toString方法。21 22 //2.equals :用來比較兩個對象 是否是同一個對象,實際上是比較兩個對象的地址值。23 Object o1 = new Object();24 Object o2 = new Object();25 Object o3 = o1;26 System.out.println(o1.equals(o2));//false27 System.out.println(o1.equals(o3));//true28 29 Person p1 = new Person("小星星", 15);30 Person p2 = new Person("小星星", 15);31 //描述的就是一個對象,但是記憶體中是兩個對象。32 //需求equals來比較,如果我描述的是同一個對象就列印true,否則false33 //重寫equals方法34 System.out.println(p1.equals(p2));35 36 //Api 裡面當此方法被重寫時,通常 有必要重寫hashCode方法,以維護hashCode方法的常規協定,該協定聲明相等的對象必須要有相等的雜湊碼37 System.out.println(p1.hashCode());38 System.out.println(p2.hashCode());39 }40 }
Person類代碼:
1 package study; 2 3 import javax.print.attribute.HashAttributeSet; 4 5 public class Person { 6 String name; 7 int age; 8 public Person(String name,int age) { 9 this.name = name;10 this.age = age;11 }12 13 //重寫toSting方法14 @Override15 public String toString() {16 // TODO Auto-generated method stub17 18 return "name = "+name+" age = "+age;19 }20 21 22 //重寫equals方法23 @Override24 public boolean equals(Object obj) {25 // TODO Auto-generated method stub26 Person p = null;27 if (obj instanceof Person) {28 //多態需要強轉,父類不能訪問子類特有的屬性29 p =(Person)obj;30 if (p.name.equals(this.name)) {31 return true;//名字一樣是對的32 }else{33 return false;//名字不一樣不是一個對象34 }35 }else{36 return false;//不是這個類是錯的37 }38 }39 //重寫雜湊碼 hashCode40 @Override41 public int hashCode() {42 43 return this.name.hashCode();44 }45 }46
java學習中,object 對象的使用(toString、equals、hashCode)(java 學習中的小記錄)