黑马程序员技术交流社区

标题: java基础面试题 [打印本页]

作者: dddlinux    时间: 2015-8-31 17:32
标题: java基础面试题
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
String s4 = "hello" + "world" ;
System.out.println( s3 == s1 + s2);
System.out.println( s3 == s4 );
System.out.println( s3.equals((s1 + s2)));
作者: 巧克黑力    时间: 2015-8-31 18:16
错对 对
作者: 残影    时间: 2015-8-31 20:06
false,true,true.
作者: freehello    时间: 2015-8-31 20:12
有点意思,学习了

作者: 心之谷96    时间: 2015-8-31 20:25
顶一个。。。。
作者: 乔友为    时间: 2015-8-31 20:41
false,true,true.
作者: shdosh    时间: 2015-8-31 20:45
有意思!
作者: 夕阳游子    时间: 2015-8-31 21:06
错对错,我运行下
作者: 哈皮哈皮doge    时间: 2015-8-31 21:23
其实这种题只要遵循一定的原则,就可以 拿下的:
字符串常量(注意是常量)之间相加,编译器会优化,把他拼在一起,如"a"+"b" 优化后就是"ab",如果常量池里面有"ab",那优化后的就是这个ab,他俩是一个对象。
字符串变量之间,或者字符串变量+字符串常量,编译器就不会优化了,相反,会new一个StringBuilder(或StringBuffer)类的对象,并调用其append()方法,将这俩字符串拼起来,成为这个新对象的字符串的内容。
作者: AAAFFF    时间: 2015-8-31 21:56
   顶一帖               
作者: dddlinux    时间: 2015-8-31 23:20
哈皮哈皮doge 发表于 2015-8-31 21:23
其实这种题只要遵循一定的原则,就可以 拿下的:
字符串常量(注意是常量)之间相加,编译器会优化,把他拼 ...

非常正确,谢谢你的总结
作者: wankaz    时间: 2015-8-31 23:38
哈皮哈皮doge 发表于 2015-8-31 21:23
其实这种题只要遵循一定的原则,就可以 拿下的:
字符串常量(注意是常量)之间相加,编译器会优化,把他拼 ...

学习了.. 多谢指导
作者: beimenshisan    时间: 2015-8-31 23:44
1楼正解
作者: marcojam    时间: 2015-8-31 23:54
1L学习了!!!
作者: 凌端浩    时间: 2015-9-1 00:10
哈皮哈皮doge 发表于 2015-8-31 21:23
其实这种题只要遵循一定的原则,就可以 拿下的:
字符串常量(注意是常量)之间相加,编译器会优化,把他拼 ...

回答的666,收藏了
==比较对象的引用,.equals()比较对象的内容
作者: binarycoc    时间: 2015-9-1 00:14
1楼说的很详细
作者: a6658637    时间: 2015-9-1 00:50
true false




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2