java静态代码块和静态方法执行顺序(java中静态代码块什么时候执行)
静态代码块在类加载时执行,并且只会执行一次。类加载的时机有以下几种情况:
1、创建类的实例对象时:使用new关键字创建类的实例对象时,JVM会先加载类,然后执行类中的静态代码块,最后生成实例对象。
2、调用类的静态方法时:直接通过类名调用类的静态方法时,JVM会先加载该类,然后执行类中的静态代码块,最后执行静态方法。
3、访问类的静态变量时:直接通过类名访问类的静态变量时,JVM会先加载该类,然后执行该类中的静态代码块,最后返回该静态变量。
需要注意的是,虽然静态代码块只会执行一次,但在其他情况下,比如创建多个实例对象或者多次调用静态方法时,静态代码块不会再次执行。
这是示例代码:
```javapublicclassMyClass{static{//静态代码块System.out.println('静态代码块执行');}
publicstaticvoidstaticMethod(){//静态方法}
公共静态intstaticVariable=10;//静态变量
publicstaticvoidmain(String[]args){//创建实例对象MyClassobj1=newMyClass();MyClassobj2=newMyClass();
//调用静态方法MyClass.staticMethod();
//访问静态变量System.out.println(MyClass.staticVariable);}}```
上面的代码中,静态代码块会在类加载时执行一次,因此在执行main方法时,会有“静态代码块执行”的输出。创建两个实例对象时,静态代码块不会再次执行。调用静态方法和访问静态变量不会再次执行静态代码块。