gpt4 book ai didi

java - 循环的简写是否缓存可迭代的引用?

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

我可能试图变得过于高效,但我一直想知道以下两个代码示例中的哪一个会执行得更快。

假设您有一个对包含 StringsArrayList 的对象的引用,并且您想要遍历该列表。以下哪项更有效(即使只是略微有效)?

for(String s : foo.getStringList())
System.out.println(s);

或者

ArrayList<String> stringArray = foo.getStringList();
for(String s : stringArray)
System.out.println(s);

如您所见,第二个循环初始化了对列表的引用,而不是像第一个示例那样在每次迭代时都调用它。除非这个概念是完全不正确的,并且它们都以相同的方式工作,因为 Java 的内部工作原理创建了它们自己的引用变量。

所以我的问题是,它是什么?

最佳答案

没有区别,因为两个循环最终只会在循环开始时为表达式获取和维护对迭代器的引用。这是 Java Language Specification 的摘录:

The enhanced for statement is equivalent to a basic for statement of the form:

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

关于java - 循环的简写是否缓存可迭代的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812504/

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