0
class Demo {
public static void main(String[] args) {
String a=new String("data");
String b="data";
if(a==b) // return false
System.out.println("a and b has same reference address");
else
System.out.println("not same");
在新的关键字对象的情况下,也"data"
实际上是存储在String
常量池。如果其被存储然后变量A和b两者具有相同的基准地址,并返回true
,如果不是则false
。是否字符串字面真的字符串存储常量池中,当我们做出使用新的关键字字符串对象(无任何使用实习生()方法)
String c=new String("data").intern();
String d="data";
if(c==d)
System.out.println("true");
else
System.out.println("false");
}
}
并且如果我们使用实习生()方法都具有可变同样参考地址,意味着实习生()方法是使用存储在字符串字符串常量池的。 我有点困惑,谁能帮助
“意思实习生()方法是用来存储字符串的字符串常量池的”不完全是。 'intern()'只会在池中没有这样的字符串时才将字符串存储在池中。如果是这样,'intern()'将返回对已存储对象的引用(在你的情况下''data''literal'用作'new String(“data”)''的*参数*)。 – Pshemo