搜索
简帛阁>技术文章>java中的代码执行顺序

java中的代码执行顺序

class code {
    public  code(){
        System.out.println("hello");
    }
}
public class Test {
    static  {
        System.out.println("静态代码块");
    }
    static  code code=new code();
    {
        System.out.println("非静态代码块");
    }
      code code1=new code();
    public static void main(String[] args) {
        Test test=new Test();
        System.out.println("main方法");
    }
}

 

 

 

1:执行代码会首先加载本类的资源,所以静态代码块和静态成员变量会比main方法先执行。

2:非静态代码块和非静态成员变量需要通过Test对象来使用,执行顺序跟位置有关。

-----------------------------------------------------------------------------------------------------------------------------------

子类父类代码执行:

class code {
    public  code(String str){
        System.out.println(str+"-hello");
    }
}
 class ParentClass{
    static {
        System.out.println("父类中的静态代码块");
    }
   static code code=new code("static父类");
   
     {
         System.out.println("父类中的非静态代码块");
     }
     code code1=new code("非静态父类");
    code co;
     public ParentClass(){
         System.out.println("父类的构造方法");
         this.co=new code("父类");
     }

}
class  SubClasses extends ParentClass{
    static {
        System.out.println("子类中的静态代码块");
    }
    static code code=new code("static子类");
    {
        System.out.println("子类中的非静态代码块");
    }
    code code1=new code("非静态子类");
    code co;
    public SubClasses(){
        System.out.println("子类的构造方法");
        this.co=new code("子类");
    }
}
public  class Test{
    public static void main(String[] args) {
        SubClasses subClasses=new SubClasses();
    }
}

 

 

 

代码分析:

1:实例化了一个subClasses对象,会先加载ParentClass,因为SubClasses构造方法默认调用supr,所以会先加载ParentClass类静态代码块和静态成员变量,然后加载SubClasses类的静态代码块和静态成员变量。

2:SubClasses类加载完后,会先创建ParentClass对象然后创建SubClasses对象,所以会先加载ParentClass类的非静态代码块和非静态成员变量,然后加载SubClasses类的非静态代码块和非静态成员变量。

3:在java中子类的构造方法会默认调用父类的构造方法,所以先执行ParentClass的构造方法,而后执行SubClasses的构造方法。

 

 

萌新勿喷!!!


 

 

 

 

 

 

 

 

 

 

 

 

classcode{publiccode(){Systemoutprintln("hello");}}publicclassTest{static{Systemoutprintln("静态代码块");
new一个对象时:静态代码块普通代码块构造方法普通方法publicclassMain{publicstaticvoidmain(String[]args){AppleapplenewApple();
运行一个Java程序时,分为类加载过程和实例化过程,即static修饰的代码块、属性、声明为类加载,类的普通属性、代码块、构造器为实例化过程。其中类加载的代码属于整个类,只执行一次;而实例化过程中的
代码执行顺序如下:1、一个类的静态代码块、构造代码块、构造方法的执行流程为:静态代码块>构造代码块>构造方法2、静态的内容是随着类的加载而加载,静态代码块的内容会优先执行3、子类初始化之
java类中代码执行顺序首先,没有学java或者不知道类继承的,可以不用浪费时间乐,直接左上角,看多了有害。java代码执行顺序是自上而下,从左到右,方法是以main方法为主方法(通常情况下,事实
1java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运行的代码。所以加载执行顺序是是java>jsp>js。2js在jsp
Python代码执行过程中,遵循下面的基本原则:普通语句,直接执行;碰到函数,将函数体载入内存,并不直接执行碰到类,执行类内部的普通语句,但是类的方法只载入,不执行碰到if、for等控制语句,按相
一般情况下,如果有些代码必须在项目启动的时候就执行,需要使用静态代码块。这种代码是主动执行的,需要在项目启动的时候就初始化。有些代码是在不创建对象的情况下,由其他程序来调用,需要使用静态方法。这种代码
只要了解过多线程,我们就知道线程开始的顺序执行顺序是不一样的。如果只是创建三个线程然后执行,最后的执行顺序是不可预期的。这是因为在创建完线程之后,线程执行的开始时间取决于CPU何时分配时间片,线程
言今天在看AndroidContentProvider实现的时候,突然想到了Java类在new的过程中,静态域、静态块、非静态域、非静态块、构造函数的执行顺序问题。其实这是一个很经典的问题,非常考察