中药热敷包配方:java 中一个问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 20:27:59
考虑下面片断

//---- start ----

String s = "0";
int i = 0;
while(i<=3){
s = s + i + " ";
i++;
}

//---- end ----
问 内存到底有多少个 String 对象?

1, 2, 3, 4, 5

为什么?
为什么答案有着这么大的差异呢?
郁闷呀

应该是5个
string对象是不可变对象,任何返回值是stirng的方法都是重新生成了新的stirng对象。

1 "0"
2 " "
3,4,5 三次循环的加算结果

用+合并string时实际上也生成了新的string对象

严格来说并不止5个,要看各种虚拟机的优化方式

楼上几个为什么不用 == 去判断一下指针是否相等?

1个;因为只声明了一个String对象s
在循环中一直在改变的s的值,并没有增加对象。

三个,s、“0”、“ ”

我觉得是2个 定义的变量是静态的 只有分配了一次 还有一个“”

1个。因为只创建了一个String对象s
内存只分配一个地址给s
没有别的了