String s = new String(“xyz”)。执行此行代码后生成了多少个对象?给定这行代码:String s = new String(“xyz”) 答:
这个面试问题的普遍同意的答案是,代码创建了两个对象。但我不这么认为。我写了一些代码来确认。
public class StringTest {
public static void main(String[] args) {
String s1 = "a";
String s2 = "a";
String s3 = new String("a");
System.out.println("s1: "+s1.hashCode());
System.out.println("s2: "+s2.hashCode());
System.out.println("s3: "+s3.hashCode());
}
}
输出为:
这是否意味着只创建了一个对象?
重申:我的问题是以下代码创建了多少个对象:
String s = new String("xyz")
而不是代码。StringTest
受@Don Branson的启发,我调试了以下代码:
public class test {
public static void main(String[] args) {
String s = new String("abc");
}
}
结果是:
s 的 id 是 84,“abc” 的 id 是 82。这到底是什么意思?