我們知道相同字符串值的對象,java不會創建不同的對象,而是共用!具體共用,參照native 方法 String.intern().
public native String intern();具體請看我的demo
public class Test { PRivate static final String finalField = "a"; private static final String finalFieldB = "a"; public static void main(String[] args) { String strA = "a"; // a System.out.println(strA.intern()); //a System.out.println(finalField == strA); // true System.out.println(finalField == finalFieldB); // true System.out.println(strA == "a"); //true System.out.println(strA == "a".intern()); //true System.out.println(strA == strA.intern()); //true, strA refer to strA.intern() String strB = "a"; System.out.println(strB.intern()); System.out.println(strA == strB); // both strA and strB refer to strA.intern() System.out.println(strA.intern() == strB.intern()); String strC = new String("a"); System.out.println("strC = " + strC); System.out.println(strA == strC); //false , different reference System.out.println(strA.intern() == strC.intern());//true , different reference but with same intern }}說明: 聲明變量的時候直接賦值, 這個變量直接引用這個對象的intern()返回的對象。
新聞熱點
疑難解答