標籤:main string text [] intern方法 等於 als 模型 har
1. String的兩個建構函式
private final char value[];private int hash;public String() { this.value = "".value;}
public String(String original) { this.value = original.value; this.hash = original.hash;}2. new String中建立幾個String對象?1)建立兩個String對象
public static void main(String[] args) { String y = new String("hello");}
記憶體模型如下:
2)建立一個String對象
public static void main(String[] args) { String x = "hello"; String y = new String("hello");}
記憶體模型如下:
3. String的intern方法
String類私人地維護著一個初始為空白的字串池,當調用intern方法時:
1. 若字串池中已包含一個等於此String對象的字串(用 equals方法確定),則返回池中的字串。
2. 否則,將此String對象添加到池中,並返回此String對象的引用。
public native String intern();
字串池中存放的是String對象引用,而不是String對象本身。
實驗:
public static void main(String[] args) { String x = "hel"; x += "lo"; String y = "ja"; y += "va"; System.out.println(x == x.intern()); // true System.out.println(y == y.intern()); // false}
y == y.intern()為false說明字串池中已存在"java",JVM啟動時在字串池中載入的字串還包括:"true"、"false"...
記憶體模型:
intern前
intern後
Java字串池