java對象都是Object類的實例,均可直接調用該類中定義的方法,這些方法提供了處理java對象的通用方法。java
打印對象和toString方法程序員
class Person { private String name; public Person(String name) { this.name = name; } public void info() { System.out.println("此人名爲:"+name); } } public class PrintObject { public static void main(String[]args) { //建立一個person對象,將之賦給p變量 Person p = new Person("孫悟空"); //打印p所引用的Person對象 System.out.println(p); } }
運行上面程序後可能輸出不一樣的結果:@符號後的6位十六進制數字可能發生改變。this
toString()方法是Object類裏的一個實例方法,全部的java實例都是Object類的子類,因此全部的java對象都具備toString()方法。code
當java對象和字符串進行鏈接運算時,系統自動調用toString對象方法的返回值 進行運算。toString方法是一個「自我描述」的方法,一般用於實現一個功能:當程序員直接打印該對象時,系統將會輸出該對象的"自我描述"信息,來告訴外界該對象具備的狀態信息。對象
該方法老是返回該對象實現類的」類名+@+hashCode「值,這個返回值並不能真正實現"自我描述"的功能,須要重寫toString方法。字符串
==和equals方法hash
==運算符判斷兩個基本類型變量的值相等時,返回true;判斷引用類型變量時,必須指向同一個對象才返回true。class
equlas方法是一個實例方法,因此全部引用變量均可調用該方法來判斷是否與其餘引用變量相等。String已經重寫了equals()方法,因此只要兩個字符串包含的字符序列相同就返回true。正確的重寫equals方法應該知足下列條件:變量
》自反性:對任意x,x.equals(x)必定返回true;引用
》對稱性:對任意x,y,z,若是x.equals(y)返回ture,y.equals(z)必定返回true。
》傳遞性:對任意x和y,若是對象中用於 等價比較的信息沒有改變,那麼不管調用x.equeals(y)多少次,返回的結果應該保持一致,要麼 一直是true或fals。
》對任何不是null的x,x.equals(null)必定返回false。
這裏涉及到反射,能夠參考反射方面的知識。