Java 杂谈心流力量

static修饰的代码在类加载的时候不一定会加载

2019-01-20  本文已影响0人  大黑跟小白的日常

类中static修饰的代码在类被加载的时候不一定会加载

我们可以说A类被加载时,A类自己的static{}一定会被加载;

但不能说A类被加载时,A类中static{}都会被加载;

有一种情况就不会被加载,A类中的内部类A$B类的static{},在A类被加载时,就不会被加载;(不管静态内部类是public还是private都一样)

这里文字游戏,玩了一波,抱歉

请往下看

内部内及一些用于测试的方法 逐一测试

我们看到,如果不触碰内部类相关的东西,内部类就不会被加载,它的static{}也不会被执行。并且它的加载是可以保证线程安全

这也是一种,非常具有代表性的单例模式的实现方式。既可以实现延迟加载单例的目的,又能达到线程安全的实例化标准。

内部类被加载时,内部类自己的static修饰的代码都被加载

内部类被加载

内部类被加载时,加载的是自己的静态代码块,如果内部类的静态成员属性跟外部类没关系,都不会加载外部类静态资源。

上一篇下一篇

猜你喜欢

热点阅读