首页 > 代码库 > 静态属性、静态代码块、静态方法、构造方法、普通方法的执行顺序

静态属性、静态代码块、静态方法、构造方法、普通方法的执行顺序

静态代码块:

是在当类被载入(内存)时,(最先被调用的),静态代码块被执行,且之被执行一次,静态块常用来执行类属性的初始化。执行类的载入之前就会调用。

 

非静态代码块:

是在当类的对象被创建载入(内存)时,(最先被调用的),每创建一个对象,即每载入一个对象,非静态代码块都执行一次。执行类对象的载入之前就会调用。

 

对象载入之前,一定要是类先被载入。

 

静态方法、非静态方法:都是调用时,才执行的。静态方法属于类的,加载完类就可以调用静态方法;非静态方法是属于对象的,加载完对象就可以调用非静态方法。

 

加载类的动作没有什么标志性,但是加载对象的标志动作就是new动作,会去执行

 

更精简:

静态代码块:类每次加载到内存中调用一次,并最先调用

非静态代码块:类的对象每次加载到内存中调用一次,并最先调用,然后是调用对应的构造方法

静态方法、非静态方法:都是进行方法调用时才执行,调用静态方法,前提是:类已经加载到内存中;调用非静态方法,前提是类的对象已经加载到内存中。

 

那么,

类什么时候被加载/类加载时机:【即类被使用时,就会加载】
第一:生成该类对象的时候,会加载该类及该类的所有父类;
第二:访问该类的静态成员的时候;
第三:class.forName("类名");