关于上一个星期遇到的面试题,实例变量与静态变量什么时候被加载的问题

时间:2022-08-27 04:49:59

注:第一次写博客,可能会出一些问题,多多包涵

public class MethodA {

    //静态变量 是在程序运行后就被加载了
    //实例变量  是在创建对象后才被加载
    
    int i = set();
    int j = 2;
    
    public int set(){
        return j;
    }
    public static void main(String[] args) {
        MethodA a = new MethodA();
        System.out.println(a.i);
    }
    

}

结果:0

原因:在创建对象a时,顺序加载变量i,调用方法set(),此时j还没有初始化,所以返回的是0

如果把  int i = set();
    int j = 2;交换一下顺序,或者把j设置成静态变量,结果就变成了2


注:本人初级java,基础部分待牢固。发现问题喜欢记录下来,后来发现记录到博客里面挺好的,以后会经常写。