java - 为什么最终实例变量没有给出默认值?

标签 java final

我在准备 Java OCA 认证时遇到了类似以下问题的问题:

public class TestClass {
    final int i;

    public static void main(String[] args) {
        TestClass t = new TestClass();
        System.out.println(t.i);
    }
}

根据 Java,实例和静态变量被赋予默认值。令人惊讶的是,这是我的控制台中显示的错误:

error: variable i not initialized in the default constructor final int i;

为什么 i 上面没有指定默认值?

最佳答案

将默认值分配给 final 变量将首先破坏使变量成为最终变量的整个目的。
final 意味着您不能在分配后更改该值。 如果为 final 变量提供了默认值,那么您将永远无法将变量的值设置为其他值(即使是第一次)。

关于java - 为什么最终实例变量没有给出默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43355406/

相关文章:

java - 我想避免清屏时出现文件太大错误

java - Java 类中方法的静态最终常量的位置

java - 为什么 Final 变量不需要在 java 的 main 方法中初始化?

java - 最终变量在jsp中不起作用

java - 为什么在使用 for-each 时循环变量实际上是最终的?

java - 如何从方法访问私有(private)变量?

java.awt.image。是谷歌应用程序引擎中的受限类

java - ICE4J 数据报包太小

java - 限制对数据库操作的并发 Web 服务调用

java - 匿名类字段访问 Java 1.8 与旧版本的兼容性