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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看代码写结果,结果是?
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:静态代码块
        给类初始化,仅仅只执行一次。
静态代码块,构造代码块,构造方法的顺序问题
        静态代码块 > 构造代码块 > 构造方法
回复 使用道具 举报
类的加载过程是什么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马