示例代码一:类变量a
public class SpringbootApplication {
//类变量a
static int a;
public static void main(String[] args) {
System.out.println(a);
}
}
运行结果:
示例代码二:类变量a
public class SpringbootApplication {
public static void main(String[] args) {
int a;
System.out.println(a);
}
}
编译报错:
总结
可以发现类变量a的示例代码是可以正常运行的,因为哪怕不为a赋上初始值,在类加载的准备阶段,a也会先被赋值上默认值,比如int类型默认值就是0,然后在初始化阶段再赋值上开发设置的值,所以有准备阶段兜底,a不设置初始值也没关系(这里要排除静态常量),那么反向推导,如果局部变量a也有准备阶段,就不会编译报错,至少可以输出0,所以Java中的局部变量是不存在准备阶段的。