gpt4 book ai didi

java - 变量应该在java中声明在循环内还是循环外

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:28 25 4
gpt4 key购买 nike

<分区>

我知道类似的问题以前被问过很多次,但我仍然不确定对象何时符合 GC 条件以及哪种方法更有效。

方法一:

for (Item item : items) {
MyObject myObject = new MyObject();
//use myObject.
}

方法二:

MyObject myObject = null;
for (Item item : items) {
myObject = new MyObject();
//use myObject.
}

我理解:“通过最小化局部变量的范围,可以提高代码的可读性和可维护性,并降低出错的可能性”。 (约书亚·布洛赫)。

但是性能/内存消耗呢?在 Java 中,当对象没有引用时,对象将被垃圾收集。如果有例如100000 个项目然后将创建 100000 个对象。在方法一中,每个对象都会有一个对其的引用 (myObject),因此它们不符合 GC 的条件?

在方法二中,每次循环迭代都会从上一次迭代中创建的对象中删除引用。所以对象肯定会在第一次循环迭代后开始变得合格。

还是性能与代码可读性和可维护性之间的权衡?

我误解了什么?

注意:假设我关心性能并且循环后不需要 myObject。

提前致谢

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com