Java编译器是否优化,如果不是必要的话,不会创建新对象/引用?Java编译器是否优化,如果不需要则不会创建新对象/引用
例如
public class Foo {
public void foo(Object[] data) {
for(int i=0; i<data.length; i++) {
Object d = data[i]; // <-- here
bar(d);
}
}
private void bar(Object o) {
//...
}
}
是一样的:
public class Foo {
public void foo(Object[] data) {
for(int i=0; i<data.length; i++) {
bar(data[i]); // <-- and here
}
}
private void bar(Object o) {
//...
}
}
在运行?
这两个片段中都没有涉及对象的创建......保存的唯一东西(是的,可能是最优化的)是局部变量。要查看编译器是否实际生成相同的代码,请查看字节码。 – Fildor