首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

唯有查看class才能找到答案的面试题

2012-10-29 
只有查看class才能找到答案的面试题String a null + aString aa null + aSystem.out.println(a

只有查看class才能找到答案的面试题

  String a = null + "a";  String aa = null + "a";  System.out.println(a == aa);

?

输出false
?

  String a = "null" + "a";  String aa = "null" + "a";  System.out.println(a == aa);

?

输出true

?

我当时答的都为true,因为我觉得结果都为字符串a,所以应该都在常量池里吧。但实际结果却让我吃惊,最后我用了一下午的时间终于找到了答案:

?

原因:(经查看相应的CLASS文件(也可以看反编译),得出以下结论)

第一个:实现原理为StringBuilder.append.toString,即产生了新的对象
第二个:编译器直接搞为String

?

启发:

由其他类型转换为字符串类型可以采用以下方法:

1.调用String.valueOf(目标对象)

2.目标对象+""

经过我本地测试发现第二种要比第一种速度快,(如果目标对象是基本数据类型的时候,会快很多)。原因我就不多说了吧。第二种编译器已经做了类型转换了,执行显然快了。

热点排行