0
点赞
收藏
分享

微信扫一扫

【java学习】静态变量、静态方法与静态代码块

是归人不是过客 2022-01-06 阅读 110

 静态变量与实例变量的定义与区别:

静态变量需要关注的点:

 静态方法与实例方法的定义与区别:

简述一下类的加载机制

public class Student {
    static int a = test();  //直接调用静态方法,只能调用静态方法

    Student(){
        System.out.println("构造类对象");
    }

    static int test(){   //静态方法刚加载时就有了
        System.out.println("初始化变量a");
        return 1;
    }
}

 思考:下面这种情况下,程序能正常运行吗?如果能,会输出什么内容?

public class Student {
    static int a = test();

    static int test(){
        return a;
    }

    public static void main(String[] args) {
        System.out.println(Student.a);
    }
}

输出结果为0。

定义和赋值是两个阶段,在定义时会使用默认值(上面讲的,类的成员变量会有默认值)定义出来之后,如果发现有赋值语句,再进行赋值,而这时,调用了静态方法,所以说会先去加载静态方法,静态方法调用时拿到a,而a这时仅仅是刚定义,所以说还是初始值,最后得到0

举报

相关推荐

0 条评论