为 Java 中的静态 final 变量分配值\n
在 Java 中,非静态 final 变量可以在两个地方赋值。
声明时。
在构造函数中。
示例
public class Tester {
final int A;
//Scenario 1: assignment at time of declaration
final int B = 2;
public Tester() {
//Scenario 2: assignment in constructor
A = 1;
}
public void display() {
System.out.println(A + ", " + B);
}
public static void main(String[] args) {
Tester tester = new Tester();
tester.display();
}
}输出
1, 2
但是在静态 final 的情况下,变量不能在构造函数中赋值。编译器会抛出一个编译错误。静态 final 变量需要在静态代码块或声明时赋值。所以静态 final 变量可以在以下两个地方赋值。
声明时。
在静态代码块中。
示例
public class Tester {
final int A;
//Scenario 1: assignment at time of declaration
final int B = 2;
public Tester() {
//Scenario 2: assignment in constructor
A = 1;
}
public void display() {
System.out.println(A + ", " + B);
}
public static void main(String[] args) {
Tester tester = new Tester();
tester.display();
}
}输出
1, 2
静态 final 变量有此行为的原因很简单。静态 final 在所有对象之间共享,如果允许在构造函数中赋值,那么在创建对象时,此变量将按对象进行更改,因此不会一次性赋值。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
JavaScript
PHP