java - 使用在编译时已知值的最终实例变量

标签 java static final

在任何情况下,使用 final 实例变量而不是 静态最终实例变量,当您在编译时已经知道它的值时,它对所有实例都是相同的?

我的意思是,尽管这种初始化在语法上是有效的:

class Test {

    final int size = 3;

    ...
}

它将为每个实例创建一个副本,所以问题是在任何情况下这样做是否有意义,而不是:

class Test {

    static final int size = 3;

    ...
}

并为所有实例制作一份副本。

谢谢

最佳答案

final 但非静态变量的目的是拥有一个对象范围的常量。它应该在构造函数中初始化。

class A {
    final int a;

    A(int a) {
        this.a = a;
    }
}

如果在声明中初始化变量,最好使用 static 关键字。

关于java - 使用在编译时已知值的最终实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003659/

相关文章:

java - 如何为 Android 应用程序生成二维码?

Java:访问静态方法

java - final static 和 static final 的区别

C++ Final 或 Sealed

java - 我只为我的最终变量分配一个值,但仍然收到错误

java - JSF MVC 框架中的 MVC 是哪些组件?

java - 如何以编程方式连续绘制多个矩形?

java - 从段落中删除一个句子

java - 如果引用的静态字段是最终的,为什么不执行静态初始值设定项

c# - 在 asp.net 应用程序中将今天的日期存储为静态值有什么缺点吗?