静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(下)

简介: 哈喽,大家好,我是指北君。在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。

反编译生成的class文件:46.jpg

执行结果:


47.jpg

我们创建了两个匿名对象,但是静态代码块只是调用了一次。

6、父类和子类执行顺序

对象的初始化顺序:

首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有构造代码块,如果有就执行父类的构造代码块,父类的构造代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有构造代码块,如果有就执行子类的构造代码块。子类的构造代码块执行完毕再去执行子类的构造方法。

总之一句话,静态代码块内容先执行,接着执行父类构造代码块和构造方法,然后执行子类构造代码块和构造方法。

父类:SuperClass.java

48.png


子类:SubClass.java49.png

测试:

50.png

打印结果:

51.jpg

相关文章
|
3月前
|
Java 编译器
不同变量的赋值时机 | 常见的面试题 | 静态代码块
这篇文章讨论了Java中不同变量的赋值时机,包括基本数据类型、引用数据类型、类变量、实例变量和局部变量,并解释了静态代码块、代码块和构造函数的执行顺序。
不同变量的赋值时机 | 常见的面试题 | 静态代码块
实例详解局部代码块,构造代码块,静态代码块
实例详解局部代码块,构造代码块,静态代码块
|
11月前
|
Java 编译器
八股文-Java方法的重载与重写
在 Java 中,重载和重写是两个关键的面向对象编程概念。重载通过方法的参数列表不同来区分同名方法,提供了更灵活的方法调用方式。而重写通过子类重新定义父类中已经存在的方法,实现了多态性的体现,让代码更具可扩展性和维护性。
123 2
八股文-Java方法的重载与重写
|
Java
类成员(代码块)
类成员(代码块)
57 1
|
Java C++
Java面向对象 类的成员之代码块的详解
Java面向对象 类的成员之代码块的详解
61 0
|
编译器 C++
C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化
C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化
138 0
|
Java 编译器
复习篇【类的构造方法与代码块的执行】
复习篇【类的构造方法与代码块的执行】
复习篇【类的构造方法与代码块的执行】
|
Java 编译器
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
|
Java
Java面向对象之方法块+this关键字
## this关键字的使用 1.是一个关键字(指代词) 代替的是某一个对象 (当前调用属性或方法时的那个对象) 2.this既然代替的是一个对象 this可以调用什么? 属性 方法 可以 this可以调用构造方法么? 可以 在一个构造方法内可以调用另一个构造方法 通过this(); 省略了构造方法的名字(必须与类名一致) 必须在另一个构造方法内调用 必须在程序的第一行 构造方法 一般方法 有顺序 认为构造方法早于一般方法 在一般方法内调用构造方法呢? 不行 构造方法可以重载 构造方法 调用另一个构造方法呢? 3.this调用的过程可以
105 0
Java面向对象之方法块+this关键字
|
架构师 Java Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)