首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 核心觀念釐清:引用與物件、== 與 equals、String 不變性

     編輯:Java 程式設計入門

釐清三個常見誤區:

1. 宣告的是什麼?

String s = "Hello world!";

這行程式碼宣告一個 引用變數 s,型別為 String,指向內容為 "Hello world!" 的 String 物件。並非宣告物件本身。若再執行 String s2 = s;,s2 同樣指向同一物件,不會產生新物件。

2. == 與 equals() 差異

  • == 比較引用值 (記憶體位址)。
    String a = new String("foo"); String b = new String("foo"); → a == b 為 false (兩個不同物件)。
  • equals() 比較物件內容。String 覆寫 equals 比較字元序列,故 a.equals(b) 為 true。
  • 自訂類別若未覆寫 equals,繼承 Object.equals 預設同 ==。使用集合 (HashSet/HashMap) 時務必正確覆寫 equals 與 hashCode。

3. String 真的改變了嗎?

String s = "Hello";
s = s + " world!";

String 為 不可變 (immutable) 類別。上述程式碼並未修改原物件,而是建立新物件 "Hello world!" 並讓 s 指向它;原物件 "Hello" 仍存在於記憶體中 (直到 GC 回收)。這也是為何頻繁字串連接建議使用 StringBuilder。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved