我无法理解以下几行之间的区别( http://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.2 )
( A)准备工作涉及将静态字段初始化为默认值。
( B)类的初始化包括为类中声明的静态字段(类变量)执行初始化器。
这是否意味着'a‘将在“准备”阶段分配默认值,而'b’将在“初始化”阶段获得赋值:
static int a;
static int b=2;发布于 2015-03-28 20:41:28
所有基本类型的字段都将自动初始化为默认值。
对于int是0。所以a == 0。您可以检查默认值这里。
它在非原始类型(类)上有区别。
所以
Font a; -> a == null (如果您尝试使用a的方法,您将得到a is not initialized。
Font b = new Font("Dialog", 16, Font.BOLD); -> b == ... (我想你理解)。
https://stackoverflow.com/questions/29322215
复制相似问题