Java 非静态初始化的例子
更新时间:2020年09月12日 16:27:36 作者:laosun
非静态初始化和静态初始化一模一样,只不过少了static关键字。但是如果两者共存的话,非静态初始化是比静态初始化慢一拍的。下边我们举两个例子来看一下。
在继承关系中,静态初始化、非静态初始化和构造函数的执行顺序
public class ExA { static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数"); } { //非静态代码块 System.out.println("父类--非静态代码块"); } public static void main(String[] args) { new ExB(); } } class ExB extends ExA { static { System.out.println("子类--静态代码块"); } { //非静态代码块 System.out.println("子类--非静态代码块"); } public ExB() { System.out.println("子类--构造函数"); } }
执行结果:
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
从上边的例子我们可以得出非静态代码块的初始化顺序是在静态代码块的初始化之后。
下边我们再来看另一个例子:
class Mug{ public Mug(int marker) { System.out.println("Mug("+marker+")"); } void f(int marker){ System.out.println("f("+marker+")"); } } public class Mugs { Mug mug1; Mug mug2; { //非静态代码块 mug1 = new Mug(1); mug2 = new Mug(2); System.out.println("mug1 & mug2 initialized"); } Mugs(){ System.out.println("Mugs()"); } Mugs(int i){ System.out.println("Mugs(int i)"); } public static void main(String[] args) { System.out.println("Inside main()"); //首先执行Mugs类中非静态代码块,创建两个对象。然后执行无参构造函数 new Mugs(); System.out.println("new Mugs() completed"); //再执行Mugs类中非静态代码块,这也是和静态代码块只初始化一次的不同之后,其次调用有参构造函数 new Mugs(1); System.out.println("new Mugs(1) completed"); } }
以上就是Java 非静态初始化的例子的详细内容,更多关于Java 非静态初始化的资料请关注脚本之家其它相关文章!
相关文章
SpringBoot2整合Ehcache组件实现轻量级缓存管理
EhCache是一个纯Java的进程内缓存框架,具有快速、上手简单等特点,是Hibernate中默认的缓存提供方。本文讲述下SpringBoot2 整合Ehcache组件的步骤2021-06-06java基于jedisLock—redis分布式锁实现示例代码
这篇文章主要介绍了jedisLock—redis分布式锁实现示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-11-11简单了解Spring beanfactory循环依赖命名重复属性
这篇文章主要介绍了简单了解Spring beanfactory循环依赖命名重复2大属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-06-06基于spring @Cacheable 注解的spel表达式解析执行逻辑
这篇文章主要介绍了spring @Cacheable 注解的spel表达式解析执行逻辑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01Spring Cloud 系列之负载均衡 Ribbon的示例代码
Ribbon 是 Netflix 发布的负载均衡器,它有助于控制 HTTP 和 TCP 客户端的行为。这篇文章主要介绍了Spring Cloud 系列之负载均衡 Ribbon的示例代码,需要的朋友可以参考下2020-11-11
最新评论