我们可以在 Java 中声明 final 变量而不进行初始化吗?
java 8object oriented programmingprogramming
在 Java 中,final 是访问修饰符,可用于文件类和方法。
- 如果方法是 final,则无法覆盖。
- 如果变量是 final,则其值无法进一步修改。
- 如果类是 final,则无法扩展。
声明 final 变量而不进行初始化
如果稍后声明 final 变量,则无法修改或为其赋值。此外,与实例变量一样,最终变量不会用默认值初始化。
因此,一旦声明最终变量,就必须初始化它们。
但是,如果您尝试在未初始化的情况下声明最终变量,则会产生编译错误,提示&;变量 variable_name 未在默认构造函数中初始化&;
示例
在下面的 Java 程序中,Student 类包含两个最终变量 name 和 age,它们尚未初始化。
public class Student { public final String name; public final int age; public void display(){ System.out.println("Name of the Student: "+this.name); System.out.println("Age of the Student: "+this.age); } public static void main(String args[]) { new Student().display(); } }
编译时错误
在编译时,此程序会产生以下错误。
输出
Student.java:3: error: variable name not initialized in the default constructor private final String name; ^ Student.java:4: error: variable age not initialized in the default constructor private final int age; ^ 2 errors
要解决此问题,您需要将声明的最终变量初始化为 −
示例
public class Student { public final String name; public final int age; public Student(){ this.name = "Raju"; this.age = 20; } public void display(){ System.out.println("Name of the Student: "+this.name ); System.out.println("Age of the Student: "+this.age ); } public static void main(String args[]) { new Student().display(); } }
输出
Name of the Student: Raju Age of the Student: 20