以下代码将创建多少个对象?
for(int i = 0; i< = 1000 ; i++)
{
String s = new String("Hello");
}
是否会抛出OutOfMemory异常?
答案 0 :(得分:1)
您的代码将循环1001次,从而创建1001个独立的String
- 对象。 s
是循环内的局部变量,因此只要系统需要内存,垃圾收集器就会释放这些不再被引用的实例占用的内存。因此,我不希望任何内存问题。
如Trengot所述,还会为String
- 池创建一个额外的对象。如果您认为它将总计为创建 1002 String
- 对象。
答案 1 :(得分:0)
在上面的例子中,将创建1000个对象,字符串池将不起作用。
关于OutOfMemory
错误,它取决于内存配置。
当您在下面创建字符串时,只会创建一个对象。
for(int i = 0; i< = 1000 ; i++){
String s = "Hello";
}