String s="a"+"b"+"c"+"d";一共创建了几个对象
2013-06-04 20:02
239 查看
只创建了一个String对象
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。
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。
相关文章推荐
- String str = "a"+"b"+"c"+"d";一共创建了几个对象?
- 关于String a=new String("a")创建几个对象问题的正确答案
- 自己来试着笔记(zhongjie)一下面试大题之一(String s = new String("xyz");创建了几个对象? )
- String s=new String("abc")创建了几个对象?
- String str = new String("xyz") 会创建几个字符串对象
- String s=new String("abc")创建了几个对象?
- Java中String str = new String("abc")创建了几个对象
- new String("abc")创建几个对象?
- String s=new String("abc")创建了几个对象?
- String s=new String("abc")创建了几个对象?
- String s=new String("abc")创建了几个对象?
- IBM Java面试题,String s = "a" + "b" + "c" + "d" + "e"; 问此语句共创建了几个对象
- String s = new String("abc");创建了几个String对象
- String s = new String("xyz")创建了几个对象
- String s = new String("abc");创建了几个String对象?
- String str=new String("abc");创建几个对象?
- String s=new String("abc")创建了几个对象?
- String a=new String("b"+"c")会创建几个对象?
- String s=new String("xyz");创建几个String对象的问题
- 关于“ String s = new String( "xyz "); ”创建了几个对象的问题。