《瘋狂java講義2》讀書筆記——處理對象

        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。

這裏涉及到反射,能夠參考反射方面的知識。

相關文章
相關標籤/搜索