java如何創(chuàng)建對象 如何比較java對象是同一個對象?
如何比較java對象是同一個對象?java中的基本數(shù)據(jù)類型判斷是否相等,直接使用"=="就行了,相等返回true,否則,返回false。但是java中的引用類型的對象就不同了,假設有兩個引用對象obj
如何比較java對象是同一個對象?
java中的基本數(shù)據(jù)類型判斷是否相等,直接使用"=="就行了,相等返回true,否則,返回false。
但是java中的引用類型的對象就不同了,假設有兩個引用對象obj1,obj2,obj1==obj2 判斷是obj1,obj2這兩個引用變量是否相等,即它們所指向的對象是否為同一個對象。言外之意就是要求兩個變量所指內存地址相等的時候,才能返回true,每個對象都有自己的一塊內存,因此必須指向同一個對象才返回ture。
如果想要自定義兩個對象是否相等的規(guī)則,那么必須在對象的類定義中重寫equals()方法,如果不重寫equals()方法的話,默認的比較方式是比較兩個對象是否為同一個對象。在Java API中,有些類重寫了equals()方法,它們的比較規(guī)則是:當且僅當該equals方法參數(shù)不是 null,兩個變量的類型、內容都相同,則比較結果為true。
重寫equals()方法的步驟一般如下:
1、先用“==”判斷是否相等。
2、判斷equals()方法的參數(shù)是否為null,如果為null,則返回false;因為當前對象不可能為null,如果為null,則不能調用其equals()方法,否則拋java.lang.NullPointerException異常。
3、當參數(shù)不為null,則如果兩個對象的運行時類(通過getClass()獲?。┎幌嗟?,返回false,否則繼續(xù)判斷。
4、判斷類的成員是否對應相等。