string a = new String("xyz"); 创建了2个对象
string a = new String("xyz"); String b= "xyz"; 还是创建了2个对象
string a = new String("xyz"); String b= "xyz"; c=a+b;创建了几个对象啊!请高手指点.
string a = new String("xyz"); String b= "xyz"; 还是创建了2个对象
string a = new String("xyz"); String b= "xyz"; c=a+b;创建了几个对象啊!请高手指点.
string a = new String("xyz"); String b= "xyz"; 创建了3个对象 string a = new String("xyz"); (2)String b= "xyz"; (1)c=a+b;(1)共创建了4个对象啊!请高手指点.
2.new String("xyz")
3.c=a+b
首先"xyz"是一个,放在常量池中.
a是一个
b指向常量池中的 "xyz",所以不需再创建
c是一个
总共3个
new String("xyz")一个对象
c一个对象。
先在棧里创建一个"xyz"字符串对象,
然后,由new关键字在堆里创建一个String对象,然后把棧里的"xyz"复制过来存进去
所以,这时是共产生两个对象了.(2)接着执行 String b = "xyz";
由于棧里创建变量空间的一个规则:如果有相同的对象,则不再创建,直接指向已存在对象;如果要创建的对象不存在,则创建一个新对象!
所以,由于(1)中的执行,棧里已存在"xyz"对象,不再重新创建,而是b直接对向"xyz",
因此,这时还是只创建了两个对象!
(3)由于Sring变量一但创建,就不能更改!
所以,当执行 c = a + b;时
会新创建一个String对象来存放,
所以,这时共有3个对象了。我这样说不能对不对,请大家指教
先在棧里创建一个"xyz"字符串对象,
然后,由new关键字在堆里创建一个String对象,然后把棧里的"xyz"复制过来存进去
所以,这时是共产生两个对象了. (2)接着执行 String b = "xyz";
由于棧里创建变量空间的一个规则:如果有相同的对象,则不再创建,直接指向已存在对象;如果要创建的对象不存在,则创建一个新对象!
所以,由于(1)中的执行,棧里已存在"xyz"对象,不再重新创建,而是b直接对向"xyz",
因此,这时还是只创建了两个对象!
(3)由于Sring变量一但创建,就不能更改!
所以,当执行 c = a + b;时
会新创建一个String对象来存放,
所以,这时共有3个对象了。
这样写的吗?
String a = new String("xyz"); 创建了2个对象
是创建2个对象
String a = new String("xyz"); String b= "xyz"; c=a+b;创建三个对象
创建三个对象
我总结大家的意思是,code : string a = new String("xyz"); String b= "xyz"; c=a+b;
在棧里创建一个"xyz"字符串对象, 一个"xyzxyz"字符串对象,堆里创建一个"xyz"字符串对象,共3个!不赞成的可以说说看法.