main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的。
我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块就执行了!!
可以总结出静态代码块和非静态代码块各自的特点:
1、静态代码块,只执行一次,并且在类加载的时候执行。
2. 非静态代码块,在每次创建对象时,都会执行一次。
3. 代码块的优先级比构造方法高。
总结:
当加载一个类时,先进行静态属性初始化,并为静态属性分配内存空间,静态方法的声明,静态块的加载,没有优先级之分,按出现顺序执行,静态部分仅仅加载一次。至此为止,必要的类都已经加载完毕,在执行main方法!!! 然后再进行普通对象的创建。
借鉴此博主的内容,写的非常好,感谢!!!
https://blog.csdn.net/It_is_IT_/article/details/119577967