Java(object類及方法簡介)
object 類介紹
java.lang.Object
java.lang包在使用的時候無需顯示匯入,編譯時由編譯器自動匯入。
Object類是類層次結構的根,Java中所有的類從根本上都繼承自這個類。
Object類是Java中唯一沒有父類的類。
其他所有的類,包括標準容器類,比如陣列,都繼承了Object類中的方法。
object 類中的方法
因為每一個類都直接或間接的繼承object類,所以一般要重寫object類中的方法,以實現相應的操作。接下來將用例子具體實現。
列表內容
1.String toString()
當列印引用,如呼叫System.out.println()時,會自動呼叫物件的toString()方法,打印出引用所指的物件的toString()方法的返回值,因為每個類都直接或間接地繼承自Object,因此每個類都有toString()方法
原來的方法內容
public String toString(){
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public String toString(){
return this.getName();
}
2.boolean equals(Object obj)
對於Object類的equals()方法來說,它判斷呼叫equals()方法的引用於傳進來的引用是否一致,即這兩個引用是否指向的是同一個物件。
Object類中的equals()方法如下:
public boolean equals(Object obj){
return (this == obj);
}
即Object類中的equals()方法等價於==。
只有當繼承Object的類覆寫(override)了equals()方法之後,繼承類實現了用equals()方法比較兩個物件是否相等,才可以說equals()方法與==的不同。
equals()方法需要具有如下特點:
自反性(reflexive):任何非空引用x,x.equals(x)返回為true。
對稱性(symmetric):任何非空引用x和y,x.equals(y)返回true當且僅當y.equals(x)返回true。
傳遞性(transitive):任何非空引用x和y,如果x.equals(y)返回true,並且y.equals(z)返回true,那麼x.equals(z)返回true。
一致性(consistent):兩個非空引用x和y,x.equals(y)的多次呼叫應該保持一致的結果,(前提條件是在多次比較之間沒有修改x和y用於比較的相關資訊)。
約定:對於任何非空引用x,x.equals(null)應該返回為false。
並且覆寫equals()方法時,應該同時覆寫hashCode()方法,反之亦然。
一個應用了equal和toString方法的簡單類——>
public class People {
private String name;
// 構造方法
public People(String name) {
this.name = name;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 重寫toString方法
@Override
public String toString() {
return this.getName();
}
// 重寫equal方法
@Override
public boolean equals(Object obj) {
String name=((People)obj).getName();
System.out.println(name);
return this.name==name;
}
public static void main(String[] args) {
People p1=new People("張三");
People p2=new People("張三");
People p3=new People("李四");
System.out.println(p3);
System.out.println("p1.equals(p2):"+p1.equals(p2));
System.out.println("p1.equals(p3):"+p1.equals(p3));
}
}
輸出結果:
李四
張三
p1.equals(p2):true
李四
p1.equals(p3):false