我正在学习Java并编写下面的简单代码:
public class Test {
private int a = b;
private final static int b = 10;
public int getA() {
return a;
}
}
public class Hello {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.getA());
}
}
结果:10 。做得好!它运行成功,没有错误。
任何人都可以解释为什么我可以在声明之前分配静态变量吗?
答案 0 :(得分:5)
作业
private int a = b;
在创建Test
的新实例时(就在调用构造函数之前)发生。
静态变量b
的声明和初始化发生在创建实例之前,加载类时。
语句的顺序并不重要,因为静态变量总是先被初始化。
答案 1 :(得分:1)
Javavariables按此顺序初始化:
因此" b"在" a"。
之前初始化希望这有帮助。
答案 2 :(得分:0)
声明变量的顺序在你的代码中并不重要,因为实际上静态变量将在非静态变量之前初始化。
答案 3 :(得分:0)
静态变量绑定到一个类 - 当然,它始终存在于类的实例之前。因此,您可以自由地将其分配给实例字段。
答案 4 :(得分:0)
你写的代码效果很好,因为
private final static int b = 10;
是类变量(静态字段)。这些类型的变量首先被初始化。
然后执行该行
private int a = b;
初始化实例变量( field )a
。
简而言之,在代码中声明这些变量的顺序并不重要。 类变量总是在实例变量之前声明。