尽管是常量,但将最终属性称为“变量”是正确的吗?

我见过很多人打来电话,例如:

final String foo = "foo"; 

“最终变量”。

但是,我完全不同意。当Java中的一种数据具有final修饰符时,我立即将其称为“ Constant”。变量不能是常数(完全不合逻辑)。

我错了吗?

ZCR0001 回答:尽管是常量,但将最终属性称为“变量”是正确的吗?

虽然在行业中我们都倾向于混合使用名称,但是通常来说,“最终变量”和“常量”之间的区别在于,“常量”在编译时是已知的,而最终变量却不是。

看看这个例子:

@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();

}

此代码编译并产生以下输出:

foo
bar

所以这就是为什么从技术上讲它可以称为最终变量的原因。

即使您立即分配值:

final String foo2 = "foo2";

写这样的东西在技术上是可能的(我承认完全是作弊的):

final String foo2 = SOME_VAR > 5 ? "foo2" : "bar2";
本文链接:https://www.f2er.com/3161121.html

大家都在问