为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

高先森_2 2016-03-21 15:26:15
下面这条语句一共创建类多少个对象String s = "a"+"b"+"c"+"d";
查看完整描述

7 回答

已采纳
?
克里斯缇娜

TA贡献1条经验 获得超6个赞


就创建了一个 
String s = "a" + "b" + "c" + "d" + "e"; 
赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量 
对于常量,编译时就直接存储它们的字面值而不是它们的引用 
在编译时就直接讲它们连接的结果提取出来变成了"abcde" 
该语句在class文件中就相当于String s = "abcde" 
然后当JVM执行到这一句的时候, 就在String pool里找 
如果没有这个字符串,就会产生一个

查看完整回答
6 反对 回复 2016-03-21
?
小立

TA贡献2条经验 获得超3个赞

答:对于如下代码:
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。

查看完整回答
3 反对 回复 2016-03-21
?
Lookiy

TA贡献4条经验 获得超3个赞

就是一个String 同String s = "abcd";

查看完整回答
2 反对 回复 2016-03-21
?
1__1

TA贡献1条经验 获得超1个赞

只创建了一个,因为
String s="a"+"b"+"c"+"d";
String s1="abcd";
System.out.println(s==s1);
结果为true,所以s和s1是一个对象,答案也就应该是一个对象
查看完整回答
1 反对 回复 2016-03-22
?
qq___524

TA贡献171条经验 获得超74个赞

"a"  "b"  "c"  "d"  "abcd"一个五个

查看完整回答
2 反对 回复 2016-03-21
?
woshiajuana

TA贡献211条经验 获得超152个赞

5个~a,b,c,d,s  

查看完整回答
2 反对 回复 2016-03-21
  • woshiajuana
    woshiajuana
    5个说错了 7个 "a" "b" "c" "d" "abcd" 还有加号加一次 "ab" "abc" 所以一共7个
?
这位童鞋

TA贡献2条经验 获得超1个赞

实际上不一定,最多七个,最少可能一个都没有,string维护了一个对象池,只要池里有的,就会返回已经存在的对象。

查看完整回答
1 反对 回复 2016-03-22
  • 7 回答
  • 0 关注
  • 3184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信