猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
下面这条语句一共创建类多少个对象String s="a"+"b"+"c"+"d";
下面这条语句一共创建类多少个对象String s = "a"+"b"+"c"+"d";
高先森_2
浏览 3185
回答 7
7回答
克里斯缇娜
就创建了一个 String s = "a" + "b" + "c" + "d" + "e"; 赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量 对于常量,编译时就直接存储它们的字面值而不是它们的引用 在编译时就直接讲它们连接的结果提取出来变成了"abcde" 该语句在class文件中就相当于String s = "abcde" 然后当JVM执行到这一句的时候, 就在String pool里找 如果没有这个字符串,就会产生一个
6
1
0
小立
答:对于如下代码: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
0
0
Lookiy
就是一个String 同String s = "abcd";
2
0
0
1__1
只创建了一个,因为 String s="a"+"b"+"c"+"d"; String s1="abcd"; System.out.println(s==s1); 结果为true,所以s和s1是一个对象,答案也就应该是一个对象
1
0
0
qq___524
"a" "b" "c" "d" "abcd"一个五个
2
1
0
woshiajuana
5个~a,b,c,d,s
2
1
1
这位童鞋
实际上不一定,最多七个,最少可能一个都没有,string维护了一个对象池,只要池里有的,就会返回已经存在的对象。
1
1
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续