java類中重寫equals方法
阿新 • • 發佈:2018-12-21
java中的equals方法
java中的equals常常用來對字串相等進行判斷。那麼equals方法和==有什麼區別呢?
先來看下程式碼:
package LaboratoryReport; public class TestEquals { public static void main(String[] args) { // TODO Auto-generated method stub String a="tt"; String b="tt"; System.out.println(a==b); //true System.out.println(a.equals(b)); //true String a1=new String("tt"); String a2=new String("tt"); System.out.println(a1==a2); //false System.out.println(a1.equals(a2)); //true String b1=new String("tt"); String b2="tt"; System.out.println(b1==b2); //false System.out.println(b1.equals(b2)); //true } }
兩個==判斷:
new之後的string兩個值相等的字串是不相等的。因為new的物件指向堆區的tt。另一個指向堆區的另一個tt。
而沒有new的string物件是相等的。因為他們都指向方法區常量池的tt。
而一個new的物件的一個沒new的物件更不會相等。
equals判斷:
string類的對equals方法進行重寫。只要值相等,就會返回true;
擴充套件:有時候我們需要對類的equals方法重寫。比如我們只根據學生類的學號判斷是否是一個人,這時候就需要重寫equals方
法。其實本來的equals是需要對存的地址進行判斷的。只是java中的string,integer類等對equals進行了重寫。這樣只要數值相等
就會相等。