Java 字串比較==與equals()區別
阿新 • • 發佈:2019-02-15
==:它是比較兩個字串的地址是否相同
equals():它是比較兩個字串的內容是否相同,這只是針對於String類而言
示例程式碼如下:
String com1 = new String("asd"); String com2 = new String("asd"); if(com1==com2){ System.out.println("com1=====com2"); } if(com1.equals(com2)){ System.out.println("com1 equals com2"); } String cmp1 = "asd"; String cmp2 = "asd"; if(cmp1==cmp2){ System.out.println("cmp1=====cmp2"); } if(cmp1.equals(cmp2)){ System.out.println("cmp1 equals cmp2"); }
輸出結果如下:
com1 equals com2
cmp1=====cmp2
cmp1 equals cmp2
new出來的都是分配新的記憶體空間,其地址不會相同
直接引用相同的字串,其地址也會相同。
-----------------------------------------------------------
當自定義的類相比較時,需要自己去實現equals()方法。而Object類的equals()方法預設是對地址進行比較的。
如:
}MyString com1 = new MyString("asd"); MyString com2 = new MyString("asd"); if(com1.equals(com2)){ System.out.println("com1 equals com2"); }else{ <pre name="code" class="java"> System.out.println("com1 is not equals com2");