📜  Java中的空白决赛

📅  最后修改于: 2022-05-13 01:55:30.316000             🧑  作者: Mango

Java中的空白决赛

Java中的 final 变量只能被赋值一次,我们可以在声明中或之后赋值。

final int i = 10;
    i = 30; // Error because i is final.

Java中的空白最终变量是在声明期间未初始化的最终变量。下面是一个空白final的简单例子。

// A simple blank final example 
    final int i;
    i = 30;

如何将值分配给对象的空白最终成员?
值必须在构造函数中赋值。

// A sample Java program to demonstrate use and
// working of blank final
class Test
{
    // We can initialize here, but if we
    // initialize here, then all objects get
    // the same value.  So we use blank final
    final int i;
  
    Test(int x)
    {
        // Since we have initialized above, we
        // must initialize i in constructor.
        // If we remove this line, we get compiler
        // error.
        i = x;
    }
}
  
// Driver Code
class Main
{
    public static void main(String args[])
    {
        Test t1 = new Test(10);
        System.out.println(t1.i);
  
        Test t2 = new Test(20);
        System.out.println(t2.i);
    }
}

输出:

10
20



如果类中有多个构造函数或重载构造函数,则必须在所有这些中初始化空白的最终变量。然而,构造函数链接可用于初始化空白的最终变量。

// A Java program to demonstrate that we can
// use constructor chaining to initialize
// final members
class Test
{
    final public int i;
  
    Test(int val)    {  this.i = val;  }
  
    Test()
    {
        // Calling Test(int val)
        this(10);
    }
  
    public static void main(String[] args)
    {
        Test t1 = new Test();
        System.out.println(t1.i);
  
        Test t2 = new Test(20);
        System.out.println(t2.i);
    }
}

输出:

10
20

空白最终变量用于创建不可变对象(其成员一旦初始化就无法更改的对象)。