女人打架实拍:java 中一个问题
来源:百度文库 编辑:高校问答 时间:2024/05/11 17:36:52
考虑下面片断
//---- start ----
String s = "0";
int i = 0;
while(i<=3){
s = s + i + " ";
i++;
}
//---- end ----
问 内存到底有多少个 String 对象?
1, 2, 3, 4, 5
为什么?
为什么答案有着这么大的差异呢?
郁闷呀
//---- 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
没有别的了