A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

看代码写结果,结果是?
class Fu {
        static {
                System.out.println("静态代码块Fu");
        }

        {
                System.out.println("构造代码块Fu");
        }

        public Fu() {
                System.out.println("构造方法Fu");
        }
}

class Zi extends Fu {
        static {
                System.out.println("静态代码块Zi");
        }

        {
                System.out.println("构造代码块Zi");
        }

        public Zi() {
                System.out.println("构造方法Zi");
        }
}

class ExtendsTest2 {
        public static void main(String[] args) {
                Zi z = new Zi();
        }
}
考察知识点:
1.静态的内容是随着类的加载而加载,所以静态代码块的内容会优先执行
2.子类初始化之前先会进行父类的初始化,而构造方法的作用就是用来给成员变量初始化的,所以得先访问父类的构造方法
3.执行顺序:静态代码块 优先 构造代码块 优先 构造方法
以上代码执行顺序以及结果:
第一步:类的加载 输出 静态代码块Fu
                                静态代码块Zi
第二部:构造方法 输出 构造代码块Fu
                                构造方法Fu
                                构造代码块Zi
                                构造方法Zi
               

9 个回复

正序浏览
类的加载过程是什么?
回复 使用道具 举报

A:局部代码块
        用于限定变量的生命周期,及早释放,提高内存利用率。
B:构造代码块
        给类初始化,每个构造方法执行前,首先执行构造代码块。
C:静态代码块
        给类初始化,仅仅只执行一次。
静态代码块,构造代码块,构造方法的顺序问题
        静态代码块 > 构造代码块 > 构造方法
回复 使用道具 举报
大家都是多长时间看完视频啊?感觉时间不够用呢
回复 使用道具 举报
还没有看到这一块,感觉好难
回复 使用道具 举报
刚做自测题的时候碰到的一个点
回复 使用道具 举报
好棒啊,不错
回复 使用道具 举报
学到了!
回复 使用道具 举报
学到了!
回复 使用道具 举报
赞一个!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马