我见过很多人打来电话:
final String foo = "foo";
Run Code Online (Sandbox Code Playgroud)
“最终变量”。
但是,我完全不同意。当Java中的一种数据具有final修饰符时,我立即将其称为“ Constant”。变量不能为常数(完全不合逻辑)。
我错了吗?
虽然在行业中我们都倾向于混合使用名称,但是通常来说,“最终变量”和“常量”之间的区别在于,“常量”在编译时是已知的,而最终变量则不是。
看一下这个例子:
@Test
public void testMe() {
class A {
final String foo;
A(int i) {
foo = (i > 10) ? "foo" : "bar";
}
void print() {
System.out.println(foo);
}
}
A a1 = new A(20);
A a2 = new A(5);
a1.print();
a2.print();
}
Run Code Online (Sandbox Code Playgroud)
此代码编译并产生以下输出:
foo
bar
Run Code Online (Sandbox Code Playgroud)
因此,从技术上讲,这就是所谓的最终变量的原因。
即使您立即分配值:
final String foo2 = "foo2";
Run Code Online (Sandbox Code Playgroud)
在技术上可以这样写(我承认完全是作弊的):
final String foo2 = SOME_VAR > 5 ? "foo2" : "bar2";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |