String s1="a"+"b"+"c"+"d" 创建了几个对象?

1111115454 发布于 2015/01/09 14:01
阅读 1K+
收藏 0
String s1="a"+"b"+"c"+"d" 创建了几个对象? 求大师们详细解答, 不要是说答案!
加载中
0
mi-la-king
mi-la-king
内存分配地址1: 用来存a对象
内存分配地址2: 用来存b对象
内存分配地址3: 用来存a+b的临时结果。
内存分配地址4: 用来存c
内存分配地址5: 用来存a+b+c
内存分配地址6: 用来存d
内存分配地址7: 用来存a+b+c+d

0
h
hehege

一个对象。在JVM中有一个字符串池,它用来保存很多可以被共享的String对象,这样如果我们在使用同样字面字符串时,它就使用字符串池中同字面的字符串。常量池是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。由于常量字符串是在编译的时候就也被确定的,因"a"、"b"、"c"和"d"都是常量,因此变量s1的值在编译时就可以确定。这行代码编译后的与String s1="abcd";是一样的。

0
rink
rink
楼主反编译看下就理解楼上说的了
返回顶部
顶部