在Java是未修改方法变量,在一个Java静态/实例方法优化
- 静态方法
final
, 预选赛重新初始化每次缺 - 实例方法
如果回答为1.或2.(或两者)final
限定符 允许Java执行优化并存储方法 变量只有一次?
如果答案取决于变量的类型,哪种类型的 变量被优化/未优化?例如,String
, int
优化,而Map
未优化?
为了比较,Java的只能存储静态类变量 如
private static final String foo = "Teenage Mutant Ninja Turtle";
一次。澄清:问题是是否
1:
static SomeReturnValueOrVoid SomeMethod() {
// 1.a Not modified, is this reinitialized each method call?
String foo = "Teenage Mutant Ninja Turtle";
// 1.b Marked final, is this reinitialized each method call?
final String bar = "Teenage Mutant Hero Turtle";
}
2:
SomeReturnValueOrVoid SomeMethod() { // not static
// 2.a Not modified, is this reinitialized each method call?
String foo = "Teenage Mutant Ninja Turtle";
// 2.b Marked final, is this reinitialized each method call?
final String bar = "Teenage Mutant Hero Turtle";
}
相当于
3:
class SomeClass {
static final String foo = "Teenage Mutant Ninja Turtle";
SomeReturnValueOrVoid SomeMethod() {
// Uses foo
}
static SomeReturnValueOrVoid SomeMethod() {
// Uses foo
}
...
}
字符串常量在编译过程中被解析 – AdamSkywalker
除'Map'之外的其他类型,如何在这种情况下处理? –
如果您在方法内部创建新映射,无论它是否为最终映射,它都会每次创建。 – AdamSkywalker