java小问题。。中String a=“a”+"b"+"c"+"d".是创建了几个对象 。 (请说明一下原理)

如题所述

一个
因为"a","b","c","d"都是常量,所以在编译期就可以确定a的值,这句话等价于:
String a= "abcd";
在编译期会首先在常量池里找有没有"abcd"这个常量,没有的话就分配一个,所以这里就创建了一个对象,并没有在堆中创建对象。

楼上的说等价于String a = new String(A);这是不准确的,因为new String()的话会在堆中分配内存空间,而这里显然没有在堆中分配空间。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-27
2个,因为右面的4个字符串在编译时是要先进行合并计算的,和成了一个新的字符串对象(假如是A) 那么该例子应该等于String a=A;及等于String a=new String(A);所以说是两个。
只要等号右边能合并的,都要在编译时进行合并再计算的。
第2个回答  2011-05-27
....
第3个回答  2011-05-27
7
第4个回答  2011-05-27
5个
"a"
"b"
"c"
"d"
a
相似回答