【发布时间】:2015-12-06 16:00:11
【问题描述】:
什么时候应该使用局部变量而不是方法?我使用规则,如果方法在特定代码块中使用两次,则应将其分配给局部变量以减少计算量,但我不确定 JVM 是否没有优化它,所以我想得到真正的答案.假设对于给定的上下文,该方法每次都会返回相同的结果。
例如:
private boolean someMethod() {
return true;
}
private boolean otherMethod() {
if (someMethod()) {
System.out.println(1);
}
// other logic
if (someMethod()) {
System.out.println(2);
}
}
我会重构为:
private boolean someMethod() {
return true;
}
private boolean otherMethod() {
boolean localVar = someMethod();
if (localVar) {
System.out.println(1);
}
// other logic
if (localVar) {
System.out.println(2);
}
}
这是正确的方法吗?
【问题讨论】:
-
method和variable是两个不同的东西。 -
答案是
dependsmethod -
我已经更新了问题 - 让我们假设对于给定的上下文,该方法将始终返回相同的结果。因此,对于我在 otherMethod() 上下文中的示例, someMethod() 将始终给出相同的结果
-
我不是 Java 内部(编译器、字节码等)方面的专家,但根据我对这些方面的有限了解,我会说 这个特定的代码(即在哪里该方法是私有的,只有
return true,并且第二个示例中的布尔变量是本地的)将被编译器优化。
标签: java