📅  最后修改于: 2020-02-12 15:00:21             🧑  作者: Mango
Java中的最终变量final只能分配一次值,我们可以在声明中或以后分配值。
final int i = 10;
i = 30; // 报错,因为i是final变量.
一个blank final在Java变量是final,该声明中没有初始化的变量。以下是空白final的简单示例。
// 一个空白final的示例
final int i;
i = 30;
值如何分配给对象的空白final?
必须在构造函数中分配值。
// 一个Java程序,展示空白final的情况
class Test
{
// 我们可以在如下进行初始化,也可以随后初始化
final int i;
Test(int x)
{
// 我们必须在这里初始化i,如果删除如下行,编译会报错.
i = x;
}
}
// 测试代码
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
如果类中有多个构造函数或重载的构造函数,则必须在所有它们中初始化空白的最终final变量。但是,可以使用构造函数链接来初始化空白的最终变量。
// Java代码,用构造函数链接来初始化空白的final变量
class Test
{
final public int i;
Test(int val) { this.i = val; }
Test()
{
// 调用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
空白的最终变量用于创建不可变的对象(初始化后即无法更改其成员的对象)。