Java中的局部变量会经历类加载过程中的准备阶段么?

示例代码一:类变量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中的局部变量是不存在准备阶段的。

原创文章 358 获赞 387 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/105530043