静态块、构造块有趣的代码示例深入理解
设计模块化代码结构,提高可维护性 #生活技巧# #编程开发#
首先我们来看一个段有意思的代码
看下面代码
public class B {public static B t1 = new B();public static B t2 = new B();{System.out.println("构造块");}static{System.out.println("静态块");}public static void main(String[] args) {B t = new B();} } 123456789101112131415 输出结果为:
构造块 构造块 静态块 构造块
总结:是不是觉得很奇怪,首先我们来分析一下:静态块:用static声明,JVM加载类的时候执行,仅执行一次构造块: 类中直接用{}定义,每一次创建对象执行执行顺序: 静态块 > main方法 > 构造块 > 构造方法所以上面的程序执行的顺序是
public static B t1 = new B();public static B t2 = new B();static{
System.out.println(“静态块”);
}B t = new B();{
System.out.println(“构造块”);
}
我们再来看看父子类之间构造方法、静态代码块的加载顺序
public class Son extends Parent { static { System.out.println("Son 静态代码块"); } Son() { System.out.println("Son 构造方法"); } public static void main(String[] args) { new Son(); new Son(); } } class Parent { static { System.out.println("Parent 静态代码块"); } public Parent(){ System.out.println("parent 构造方法"); } }
12345678910111213141516171819202122输出结果:
从上面的代码中可以看出,在创建类对象时,会先执行父类和子类的静态代码块,然后再执行父类和子类的构造方法。并不是执行玩父类的静态代码块和构造方法后,再去执行子类。静态代码块只运行一次,在第二次对象实例化时,不会运行
网址:静态块、构造块有趣的代码示例深入理解 https://www.yuejiaxmz.com/news/view/466474
相关内容
ResNet中残差块的理解(附代码)深入解析:智能照明模块如何精确控制灯光,打造智能生活新体验
二维码的生成与扫描技术深入解析
端午节相关庆祝代码的示例资源
深入理解CI/CD:构建、测试和部署的完整流程
心理护理对斑块状银屑病静止期患者负面情绪的影响
情感融入之语音识别原理及应用(包含实例代码)
python 智能家居控制模块
WiFi+BLE蓝牙模块在物联网设备的应用案例
Python Base64模块的使用