Nit*_*arg 2 java variables scope constants
在以下示例中,b声明了变量final,但没有声明static.这意味着它是一个常量实例变量.但是,因为它是常量,所以没有任何Passenger对象可以改变它的值.因此,声明它static并使其成为类变量不是更好,因此所有实例化对象只能使用一个副本吗?
class Passenger {
int a;
final int b = 0;
void drive() {
System.out.println("I'm driving!");
}
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*icz 10
final但非static变量的目的是具有对象范围的常量.它应该在构造函数中初始化:
class Passenger {
final int b;
Passenger(int b) {
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你总是0为final变量赋一个常量的文字值(),那就没有多大意义了.使用static是首选,因此您只有一个副本b:
static final int b = 0;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我不认为有默认访问修饰符是你的意图.
| 归档时间: |
|
| 查看次数: |
5036 次 |
| 最近记录: |