String str = new String (“Practical ”) ; str += “Java” ; 共产生几个对象?为什么?
String是不变的。
也就是说 String a=“aa”是不变的。
此时a指向存放着值“aa”的内存地址
当a=+“bb”的时候,这时候原先a到“aa”的指向断开了,
转而指向 “aabb”的地址了。
所以该题:
产生第一个对象“Practical” --第一个对象
String str = new String () --第二个对象
str--〉(指向)第一个对象“Practical” --此时没产生对象
“Java” --产生第三个对象
“java”+“Practical” --产生第四个对象。
str--〉指向 第四个对象,但没有产生新对象。
所以一共产生4个对象。
顺便膜拜楼上几位。
共产生一个对象,使用“+”字符串连接符是通过StringBuffer类实现的,不生成新的对象
1."Practical"
2."java"
3.new String()
4.str
5.str+=
Practical
str
“Java”
str+
String str = new String (“Practical ”) ; str += “Java” ;
如果“Practical ” 已经在常量区存在就不生成了
newnew String (“Practical ”) String (“Practical ”) 一个
new String (“Practical ”)
new String (“Practical ”) 二个(“Practical ”不存在)
“Practical ”)
new String (“Practical ”)
str+=是不生成对象的
“Java”同上看是否在变量区存在
所以说最少创建1个,最多创建3个
共产生一个对象,使用“+”字符串连接符是通过StringBuffer类实现的,不生成新的对象。
这个问题楼主可参考
[url]http://www.iteye.com/topic/774673[/url]
其他的解释都是浮云!