我们知道相同字符串值的对象,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()返回的对象。
新闻热点
疑难解答