一道String对象的面试题

String x1 = new String("c") + new String("d");
x1.intern();
String x2 = "cd";
System.out.println(x1 == x2);	//?

String x3 = new String("cd");
x3.intern();
String x4 = "cd";
System.out.println(x3 == x4);	//?

以上代码块中第4行和第9行的输出分别是什么?

全部评论
我的想法是: x1等价于new StringBuilder().append(new String("c")).append(new String("d")).toString(); 又等价于new String("cd"),所以且不论上述两行输出是什么,应该是同为true或同为false。 而HotSpot 1.8的输出分别是true和false。 第9行输出可以理解,x3指向堆中的"cd"字符串对象,x4指向串池中的"cd"字符串,所以为false。
点赞 回复 分享
发布于 2023-04-08 16:37 浙江
这是哪一家的面试题啊
点赞 回复 分享
发布于 2023-04-09 09:48 湖北

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务