美文网首页Java 杂谈
代码块相关的题,特么再也不会做错了!

代码块相关的题,特么再也不会做错了!

作者: Wizey | 来源:发表于2018-09-29 23:05 被阅读7次

代码块包括静态代码块和非静态代码块,另外还有构造函数,它们的执行顺序是面试中经常考的,理解了下面这些基本知识,特么再也不会做错了。

一、静态代码块

定义

一个类的源文件(.java)被编译为字节码文件(.class)后,当需要使用某个类时,Java 虚拟机就将该类的字节码文件读入内存,加载类中的信息,静态代码块只被执行一次,且静态代码块不能被访问修饰符(private、default、protected、public)修饰。静态代码块是初始化该类的,而构造函数才是初始化该类具体的对象实例的。

// 静态代码块
static {
    ...
}

静态代码块执行的时机

1、显式使用 Class.forName() 加载某个类时。

2、执行一个类的 main() 方法时。

3、使用构造函数创建(new)一个对象时,如 Test test = new Test(),等同于 Test test = Class.forName().newInstance()。

4、调用类的静态变量(static)时,注意调用静态常量(final static 关键字修饰)是不会执行静态代码块的。

5、调用类的静态函数时,无论是否有 final 关键字修饰,都会执行静态代码块。

注意

1、多个静态代码块按定义的顺序从前往后依次执行。

2、使用 Class.forName() 时不初始化该类不会执行静态代码块,如 Class.forName("Test", false, Test.class.getClassLoader())。

静态代码块的作用

静态代码块具有初始化静态成员变量和给静态成员变量赋值的作用,如单例模式中的饿汉模式,类一旦加载就实例化出一个对象,用到的就是静态代码块。

二、非静态代码块

定义

非静态代码块又称为初始化块,直接用 {} 定义,可以用在类中和方法中。

// 非静态代码块
{
    ...
}

非静态代码块执行的时机

静态代码块执行之后,构造函数执行之前,每一次创建对象时执行。

注意:多个非静态代码块按定义的顺序从前往后依次执行。

非静态代码块的作用

非静态代码块也有初始化变量和对象的作用,但这个初始化有些鸡肋,因为我们都是在构造函数中初始化对象的。

三、总结

一个类中,按照如下顺序执行:

1、执行静态代码块

2、执行非静态代码块

3、执行构造函数

对于静态变量、静态代码块、变量、非静态代码块、构造函数,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、非静态代码块)> 构造函数。

在多个类的继承中,按照如下顺序执行:

1、执行父类的静态代码块,初始化父类静态变量。

2、执行子类的静态代码块,初始化子类静态变量。

3、执行父类的非静态代码块和父类的构造函数,初始化父类的成员变量。

3、执行子类的非静态代码块和字类的构造函数,初始化子类的成员变量。

初始化过程

想看更多编程文章,欢迎关注下方的微信公众号哦。

编程心路

相关文章

  • 代码块相关的题,特么再也不会做错了!

    代码块包括静态代码块和非静态代码块,另外还有构造函数,它们的执行顺序是面试中经常考的,理解了下面这些基本知识,特么...

  • 嗨,你人品掉了

    “哎呀,你这道题做错了。” “就算做错了,方法也是对的。”还不忘给一个白眼。 果然不是正常人,说话都特么奇葩,不按...

  • 相关代码块

    mainfest.plist文件内容 lfs-client-iphone.html 的文件内容

  • xcode 代码块

    xcode10代码块标识被放到上面了,你要是还以为像以前一样用那就大错特错了. Title代码块标题Summary...

  • 对不起

    老师,这道题,我不会做” 对不起,我不会做。 多希望快点结束 我不想……想过再也不要…… 不会做的痛苦,都会以某种...

  • 冯少请吃饭

    特么太远,再也不去了。 往者不可谏,不说也罢靠靠靠。

  • 简书不支持代码块么?

    简书不支持代码块么?

  • "invalid Region <center:

    问题 昨天在使用地图时,一直崩溃...关键特么不报具体错误...and 这段地图相关代码之前用过,一直没有问题.....

  • 随手记1

    特么喜欢一个人还要定时么?! 你特么连个饭都不会做老子都不嫌弃你!!!! 卧槽我真是瞎了眼,欺骗了自己的心 我...

  • 我还年轻,我还年轻

    这段日子过得真的挺不顺心的,哎很无奈啊。今天进行高数考试,明明会做的题却记错了解法真的不应该。下午机试也有题不会做...

网友评论

    本文标题:代码块相关的题,特么再也不会做错了!

    本文链接:https://www.haomeiwen.com/subject/fohioftx.html