gpt4 book ai didi

java - 增强for循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:41 25 4
gpt4 key购买 nike

我经常遇到这样的情况,我想对从某个对象获取的某些集合或数组使用增强的 for 循环。

例如

items = basket.getItems();
for (int item : items) {
// Do something
}

另一种方法是:

for (int item : basket.getItems()) {
// Do something
}

在我看来,第二个更紧凑并提高了可读性,尤其是当 item 变量不会在其他任何地方使用时。

我想知道for语句中的getter对性能有没有影响。它会被优化为类似于第一个的东西吗?还是每次都会访问 setter/getter ?当然 getItems() 可能会做一些很慢的事情(例如网络访问等)

问题与其他问题类似,但指的是集合/数组本身的 setter/getter ,而不是它的大小。不过,最后可能还是一样。

最佳答案

在这两种情况下,getItems() 方法只会被调用一次。两者之间没有区别,除了一个使用额外的局部变量,您可以在其他地方使用它。

正如您在 JLS 14.14.2 中所读到的那样,增强的 for 循环粗略地翻译成这个传统的 for 循环:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
TargetType Identifier = (TargetType) #i.next();
Statement
}

#i is an automatically generated identifier that is distinct from any other identifiers (automatically generated or otherwise) that are in scope (§6.3) at the point where the enhanced for statement occurs.

从这里可以清楚地看出 Expression 只计算了一次。

关于java - 增强for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476203/

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