实例块与静态块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实例块与静态块相关的知识,希望对你有一定的参考价值。

实例块:

实例块,可以写任意个,new对象时,实例块要比构造器先执行,不new对象实例块不会执行。实例块的写法就是在类的括内写一对{ },里面除了方法以外,可以写任意代码,由于不像构造器能传递参数,所以基本日常开发中不会用到实例块。例如:

技术分享

因为实例块要比构造器先执行所以先输出“实例块”。


静态块:

静态块,可以写任意个,类被加载的时候就被执行,但是只会被加载一次,不会加载第二次。一个类只要写了静态块,而且有main方法静态块里面有代码的话里面的代码都会进行加载。例如:

技术分享


因为静态块是在类加载的时候就被加载,所以静态块里面的代码也会进行执行。




类什么时候会被加载:

 一个类在被new对象、被访问调用方法、被访问静态成员均会促使这个类进行加载。还有就是用Class.forName();来加载类,这个方法是专门用来加载类的。例如:

技术分享


 如果访问类的常量是不会促使类进行加载的,因为常量层和类的内存不在一块,所以类不会被加载。例如:

技术分享

技术分享

静态块没被加载只调用了常量的值


本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1974039

以上是关于实例块与静态块的主要内容,如果未能解决你的问题,请参考以下文章

静态代码块与非静态代码块

静态块与静态变量

JavaSE8基础 父子类中都有静态代码块与构造代码块,执行顺序的简单示例

java新建对象的static块与构造器的执行顺序

Java 初始化块详解

非静态与静态