黑马程序员技术交流社区
标题: 比较坑的测试题分析 1 [打印本页]
作者: liuchenguangqnm 时间: 2016-4-18 23:36
标题: 比较坑的测试题分析 1
下面程序的运行结果是(D) String s1 = “abc”;
String s2 = new String(“abc”);
System.out.println(s1==s2);
String s3 = “你好吗”;
String s4 =”你”;
String s5 =”好吗”;
System.out.println(s3==(s4+s5))
a) truetrue no
b) falsetrue
c) trueflase no
d) falsefalse
如上题,主要考察三个知识点:
知识点一:String s = "abc"; 实际上是在常量池中新建了一个对象
String s = new String("abc");实际上是在堆内存中新建了一个对象
知识点二:运算符中的 == 号实际上比较的是双方的地址值
知识点三:java中有常量优化机制,即当你定义 String s = "你" + "好吗";的时候,java会先把它们合成"你好吗",再去赋值
但是需要注意的是, 如果定义 String s1 = "你"; String s2 = "好吗"; 再定义 s3 = s1 + s2;时,java就不会先将它们合成再赋值了
因为常量优化机制不能在赋值之前得到s1和s2的数值
所以最后选择D
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |