java中equals與==的使用
阿新 • • 發佈:2018-12-21
下面用個小例子記錄一下
package lianxi1; public class lianxi1 { public static void main(String[] args) { String s1 = "chaoren"; String s2 = "chaoren"; String s3 = new String("chaoren"); System.out.println(s1 == s2); System.out.println(s1== s3); System.out.println(s1.equals(s3)); } }
對應的結果是
true
false
true
“==”比較的是2個數據引用的是否是同一位置,equals比較的是內容是否一樣。
這裡有一點需要了解在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較物件的記憶體地 址,
但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆記憶體中的存放地址了。
在以後熟悉做專案時候,你會發現只要是自己的生成的實體類中都會重寫equals方法。
這裡的s2和s1引用的同一個位置,所以比較為true。
s3是新生成的一個物件,只能在equals的情況下才為true。