什么是初始化,原始或对象?

时间:2013-09-10 09:02:18

标签: java object static-members

class A{
public final static int num = 0;
public final static B instance = null;
}

我听说班级成员首先被初始化。那么在这段代码中,首先初始化的是什么,Java是否有一个初始化变量的顺序?

提前致谢。

4 个答案:

答案 0 :(得分:2)

我不知道你听到了什么,但我相信它们是按照它们的编写顺序初始化的。 检查 documentation

  

接下来,执行类变量初始值设定项和静态   类的初始值设定项,或接口的字段初始值设定项,   按文字顺序,好像它们只是一个块。

答案 1 :(得分:1)

它们将按照您在代码中编写它们的顺序进行初始化。第一个int将被初始化,然后是B

答案 2 :(得分:1)

public final static int num = 0;
public final static B instance = null;

这两个陈述都涉及JVM的相同/等效努力。第二个语句只创建 null 引用,而不是实际的 new 对象。该引用通常是(32/64位)值,具体取决于VM和平台。所以,我会说JVM将按它们出现的顺序执行它们。

§12.4.2 JLS:

  

初始化C的过程如下:

     

然后,初始化最终的类变量和接口字段   其值为编译时常量表达式(§8.3.2.1,§9.3.1,   §13.4.9,§15.28)。

     

接下来,执行类变量初始值设定项和静态   类的初始值设定项,或接口的字段初始值设定项,   按照文字顺序,好像它们只是一个块。

答案 3 :(得分:1)

变量a static 变量,因此它们基本上是类变量,并且在加载类时创建。

类加载一次发生,因此没有任何一个首先创建一个。 JVM只是逐个创建它们,可能是按照声明的顺序。 numinstance都是一组32位/ 64位数据;唯一不同的是,num值为数字0;而实例是值是一个地址。