main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的。
我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块就执行了!!

可以总结出静态代码块和非静态代码块各自的特点:
1、静态代码块,只执行一次,并且在类加载的时候执行。
2. 非静态代码块,在每次创建对象时,都会执行一次。
3. 代码块的优先级比构造方法高。


总结:
当加载一个类时,先进行静态属性初始化,并为静态属性分配内存空间,静态方法的声明,静态块的加载,没有优先级之分,按出现顺序执行,静态部分仅仅加载一次。至此为止,必要的类都已经加载完毕,在执行main方法!!! 然后再进行普通对象的创建。

借鉴此博主的内容,写的非常好,感谢!!!
Java程序中,main方法并非首个执行点。类加载时,静态代码块先于main方法执行,仅执行一次。非静态代码块在每次创建对象时运行。代码块优先级高于构造方法。类加载过程包括静态属性初始化、静态块加载,然后执行main方法,最后创建普通对象。

524

被折叠的 条评论
为什么被折叠?



