Java 在循环中创建字符串对象

Java 在循环中创建字符串对象,java,string,object,Java,String,Object,以下代码将创建多少个对象 for(int i = 0; i< = 1000 ; i++) { String s = new String("Hello"); } 是否会抛出OutOfMemory异常?您的代码将循环1001次,从而创建1001个独立的字符串对象。s是循环中的一个局部变量,因此垃圾收集器将在系统需要内存时立即释放这些不再引用的实例所占用的内存。因此,我不希望出现任何内存问题 如Trengot所述,还将为字符串池创建一个附加对象。如果您认为它将总共创建1002个字符串

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

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

是否会抛出OutOfMemory异常?

您的代码将循环1001次,从而创建1001个独立的字符串对象。s是循环中的一个局部变量,因此垃圾收集器将在系统需要内存时立即释放这些不再引用的实例所占用的内存。因此,我不希望出现任何内存问题


如Trengot所述,还将为字符串池创建一个附加对象。如果您认为它将总共创建1002个字符串对象。

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

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

每个人都应该先尝试一下,但我希望有人解释如何计算创建的对象数量,因为用户似乎是初学者,所以不应该抛出任何错误。变量S在for循环的范围内是局部的,所以GC一需要空间就删除它。我们还考虑在字符串池中创建的对象为hello吗?因此,计数应该是1001。它将创建1001个对象,但在for循环结束时,字符串池中只剩下1个对象,加上各种字符串实例等待垃圾收集,没有对它们的引用。一个对象用于Hello,另一个对象用于每个for循环。代码循环1001次请参阅for循环中的条件,因此将创建1001个对象:-但是,您的第二个点是有效的,因此+1!