循环中的字符串对象创建

时间:2014-04-15 08:37:55

标签: java string object

以下代码将创建多少个对象?

for(int i = 0; i< = 1000 ; i++)
{
    String s = new String("Hello");
}

是否会抛出OutOfMemory异常?

2 个答案:

答案 0 :(得分:1)

您的代码将循环1001次,从而创建1001个独立的String - 对象。 s是循环内的局部变量,因此只要系统需要内存,垃圾收集器就会释放这些不再被引用的实例占用的内存。因此,我不希望任何内存问题。

如Trengot所述,还会为String - 池创建一个额外的对象。如果您认为它将总计为创建 1002 String - 对象。

答案 1 :(得分:0)

在上面的例子中,将创建1000个对象,字符串池将不起作用。 关于OutOfMemory错误,它取决于内存配置。 当您在下面创建字符串时,只会创建一个对象。

for(int i = 0; i< = 1000 ; i++){
     String s = "Hello";
}