什么是空白最终变量?什么是Java中的静态空白最终变量?
静态变量-静态变量也称为类变量。您可以使用关键字声明一个静态变量。一旦声明了一个静态变量,则无论在该类中创建了多少个对象,在类中都只有一个副本。
public static int num = 39;
实例变量-这些变量属于类的实例(对象)。这些在类内但在方法外声明。这些在实例化类时初始化。可以从该特定类的任何方法,构造函数或块中访问它们。
您必须使用对象访问实例变量。也就是说,要访问实例变量,您需要创建该类的对象,并使用该对象,您需要访问这些变量。
final-声明变量final后,您将无法为它重新赋值。
空白变量
没有初始化的最终变量称为空白最终变量。与实例变量一样,最终变量将不会使用默认值初始化。因此,在声明最终变量后必须初始化它们。
但是,如果您尝试在代码中使用空变量,则会生成编译时错误。
示例
在下面的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 constructorprivate 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: RajuAge of the Student: 20
静态空白最终变量
以同样的方式,如果您声明了一个静态变量final而不对其进行初始化,则将其视为静态最终变量。
当变量被声明为静态变量和最终变量时,您只能在静态块中对其进行初始化,如果您尝试在其他位置对其进行初始化,则编译器会假定您正在尝试将值重新分配给它并生成编译时错误-
示例
class Data{static final int num;
Data(int i){
num = i;
}
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of the constant: "+Data.num);
}
}
编译时错误
ConstantsExample.java:4: error: cannot assign a value to final variable numnum = i;
^
1 error
示例
因此,必须在静态块中初始化静态最终变量。
为了使上述程序正常工作,您需要将静态块中的最终静态变量初始化为-
class Data{static final int num;
static{
num = 1000;
}
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of the constant: "+Data.num);
}
}
输出结果
value of the constant: 1000
以上是 什么是空白最终变量?什么是Java中的静态空白最终变量? 的全部内容, 来源链接: utcz.com/z/347160.html