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