在声明之前分配静态变量

时间:2014-12-30 09:24:46

标签: java static

我正在学习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());
    }

}

结果:1​​0 。做得好!它运行成功,没有错误。

任何人都可以解释为什么我可以在声明之前分配静态变量吗?

5 个答案:

答案 0 :(得分:5)

作业

private int a = b;  

在创建Test的新实例时(就在调用构造函数之前)发生。

静态变量b的声明和初始化发生在创建实例之前,加载类时。

语句的顺序并不重要,因为静态变量总是先被初始化。

答案 1 :(得分:1)

Javavariables按此顺序初始化:

  1. 超类的静态变量(如果有的话)
  2. 当前类的静态变量。
  3. 静态变量和静态块按顺序排列 声明
  4. 超类的实例变量
  5. 当前类的所有实例变量。
  6. 实例变量和实例级初始化块 声明命令
  7. 因此" b"在" a"。

    之前初始化

    希望这有帮助。

答案 2 :(得分:0)

声明变量的顺序在你的代码中并不重要,因为实际上静态变量将在非静态变量之前初始化。

答案 3 :(得分:0)

静态变量绑定到一个类 - 当然,它始终存在于类的实例之前。因此,您可以自由地将其分配给实例字段。

答案 4 :(得分:0)

你写的代码效果很好,因为 private final static int b = 10;类变量静态字段)。这些类型的变量首先被初始化。

然后执行该行 private int a = b; 初始化实例变量 field a

简而言之,在代码中声明这些变量的顺序并不重要。 类变量总是在实例变量之前声明。

相关问题