码迷,mamicode.com
首页 > 编程语言 > 详细

java 面试1

时间:2014-11-25 18:49:53      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:java

37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

答:对于如下代码:

String s1 = "a";

String s2 = s1 + "b";

String s3 = "a" + "b";

System.out.println(s2 == "ab");

System.out.println(s3 == "ab");

第一条语句打印的结果为false,第二条语句打印的结果为true,这说明javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。

题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个abcd”的字符串,所以,上面的代码应该只创建了一个String对象。写如下两行代码,

         String s ="a" + "b" + "c" + "d";

         System.out.println(s== "abcd");

最终打印的结果应该为true


java 面试1

标签:java

原文地址:http://learonlizheng.blog.51cto.com/2367136/1582474

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!