欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

final修饰变量的初始化时机

程序员文章站 2022-05-21 22:37:55
...

final修饰变量的初始化时机

  • A:final修饰变量的初始化时机

    • 显示初始化
    • 在对象构造完毕前即可

      class Demo03_Final {
          public static void main(String[] args) {
              Demo d = new Demo();
              d.print();
          }
      }
      
      //正确
      class Demo {
          int num = 10;
          public void print() {
              System.out.println(num);
          }
      }
      
      //正确
      class Demo {
          //显示初始化
          final int num = 10;
          public void print() {
              System.out.println(num);
          }
      }
      
      //错误
      class Demo {
          //可能尚未初始化变量num
          //被final修饰的初始化值只能被赋值一次,成员变量的默认初始化值是无效值
          //所以必须得显示初始化值
          final int num;
          public void print() {
              System.out.println(num);
          }
      }
      
      //正确
      class Demo {
          final int num;
          //构造初始化
          public Demo(){
              num = 10;
          }
          public void print() {
              System.out.println(num);
          }
      }
      
      //错误
      class Demo {
          final int num = 10;
          //不能双管齐下
          //无法为最终变量num分配值,被final修饰的只能被赋值一次
          public Demo(){
              num = 10;
          }
          public void print() {
              System.out.println(num);
          }
      }