java中,String s = "a" + "b" + "c" + "d" + "e"; 问此语句共创建了几个对象

来源:百度知道 编辑:UC知道 时间:2024/05/16 06:22:38

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

应该是一个对象,"a" ,"b" , "c" , "d" , "e"虽然都是对象,但是是常量,常量就意味着很可能在编译时期编译器已经把他们相加起来了,在运行时就做了一个String s = "abcde"的操作,也就说运行时期是没有"a" ,"b" , "c" , "d" , "e"的!

就像int a = 3+2;
这样的句子还会留到运行期去做么!如果真是这样,只能说这个编译器太垃圾了。。。。

一共9个对象 java中String 每个引号都是一个对象 这就是5个了
"a"+"b"=ab一个
"ab"+"c"=abc
"abc"+"d"=abcd
"abcd"+"e"=abcde
这又是4个

一共有9个

虽然s只是指向最后一个 但是实际上产生了9个对象

10个 ,2楼前面说