前两个例子:
1)
MyClass myClass;
for (int i=0; i<arrayList.size(); i++) {
myClass = arrayList.get(i);
...
}
2)
for (int i=0; i<arrayList.size(); i++) {
MyClass myClass = arrayList.get(i);
...
}
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,引用变量myClass仅创建一次.但是在第二个例子中,它是仅创建一次,还是每次迭代创建一次?我的想法也许是编译器优化了这个,我不知道.
我试图通过编写一个例子回答这个问题,但无法弄明白.如何通过代码证明?
注意:我意识到示例2是更好的样式,因为myClass在for循环之外是未知的,并且它的范围保持最小.我也在这里搜索过,但是没有找到这个确切问题的确定答案(通常这是一个"哪个是首选的?"的问题.)我还假设如果每次迭代都创建了myClass引用,那么它不是一个大的表现问题.
编辑:再说一遍,我不是问哪种编码风格更好.此外,我想知道它是否可以通过代码推断/证明.我试图生成并比较字节码,但我不熟悉字节码,生成的内容不完全匹配.