java - 在循环中创建对象

标签 java oop loops object

在循环中创建对象是一种好习惯吗?我指向以下代码:

for(some condition){
    SomeClass a = new SomeClass ();
    System.out.println(a);
}

所以这将为每次迭代创建一个新的 SomeClass 实例。所以实例数将等于迭代次数。然后这些将被 GC 收集。

在循环中重用 SomeClass 对象会更好吗?像这样的:

SomeClass a = null;

for(some condition) {
    a = new SomeClass();
    System.out.println(a);
}

据我了解,第二种方法更好,因为它只会创建一次 SomeClass 对象,并在每次迭代中重用它。但我很怀疑。请确认这一点,或者让我知道我的基础不正确的地方。

最佳答案

不同之处在于,在第二种情况下,当循环结束时,您的 a 变量仍将在范围内

除此之外,它们本质上是相同的,即使从垃圾收集的角度来看也是如此。

字符串是引用类型(尽管是不可变的),无论您是为它们声明一个新变量还是每次都覆盖同一个变量,这并不重要。您仍然每次都在创建一个全新的字符串。

关于java - 在循环中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21860573/

相关文章:

java - 将 Matchers.eq() 与其他模拟值一起使用时出现 InvalidUseOfMatchersException

java - 有人可以举例说明 as400 dataqueue 类中的 addDataQueueListener()

java - 当初始化变量链接到另一个变量时?

python - 给定两个数组 `a` 和 `b` ,找到所有对 `(i, j)` 使得 `i <= j` 和 `a[i] - b[j] = a[j] - b[i]`

Javassist - 将标志传递给编译器

java - 导航发生时动态更改 AppLayout 中的 NavBar 内容

PHP 更改方法/函数可见性

javascript - OO Javascript,从构造函数 addEventListener 调用原型(prototype)函数

matlab - 水平连接由相似变量名称表示的列向量

java - Struts2 使用动态变量通过列表进行嵌套迭代