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(); } }