intern()方法: public String intern() JDK源代碼如下圖: 返回字元串對象的規範化表示形式。 一個初始時為空的字元串池,它由類 String 私有地維護。 當調用 intern 方法時,如果池已經包含一個等於此 String 對象的字元串(該對象由 equals(Ob ...
intern()方法:
public String intern()
JDK源代碼如下圖:
返回字元串對象的規範化表示形式。
一個初始時為空的字元串池,它由類 String 私有地維護。
當調用 intern 方法時,如果池已經包含一個等於此 String 對象的字元串(該對象由 equals(Object) 方法確定),
則返回池中的字元串。否則,將此 String 對象添加到池中,並且返回此 String 對象的引用。
它遵循對於任何兩個字元串 s 和 t,當且僅當 s.equals(t) 為 true 時,s.intern() == t.intern() 才為 true。
所有字面值字元串和字元串賦值表達式都是內部的。
返回:
一個字元串,內容與此字元串相同,但它保證來自字元串池中。
儘管在輸出中調用intern方法並沒有什麼效果,但是實際上後臺這個方法會做一系列的動作和操作。
在調用”ab”.intern()方法的時候會返回”ab”,但是這個方法會首先檢查字元串池中是否有”ab”這個字元串,
如果存在則返回這個字元串的引用,否則就將這個字元串添加到字元串池中,然會返回這個字元串的引用。
例如:
public class Str2{ public static void test(){ String a="a"; String b=a+"b"; String c="ab"; String d=new String (b); System.out.println(b==c); System.out.println(d==c); System.out.println(c==d.intern()); System.out.println(b.intern()==d.intern()); } public static void main(String []args){ new Str2().test(); } }