JAVA中执行顺序

用<<Thinking in Java>>例子说明


public class Insect {


private int i=9;
protected int j;
Insect()
{
System.out.println("i="+i+",j="+j);
j=39;
}

private static int x1=printInit("static Insect.x1 initialized");

static int printInit(String s){
System.out.println(s);
return 47;
}
}


public class Beetle extends Insect{


private int k=printInit("Beetle.k initialized");
public Beetle() {
System.out.println("k="+k);
System.out.println("j="+j);
}

private static int x2=printInit("static Insect.x2 initialized");

public static void main(String []args) {
System.out.println("Beetle constructor");
Beetle b=new Beetle();
}
}


运行结果:

static Insect.x1 initialized
static Insect.x2 initialized
Beetle constructor
i=9,j=0
Beetle.k initialized
k=47
j=39

从中可以看出执行顺序:

父类静态,

子类静态,

父类非静态,

父类构造,

子类非静态,

子类构造



JAVA中赋值顺序 

public class Insect {


public String type="Insect父类成员变量赋的值"; 
Insect()
{
 System.out.println("Insect父类构造器--type-->"+type);  
       type="Insect父类构造器赋的值";  
                  System.out.println("Insect父类构造器----type--->"+type);  

}

{  
        System.out.println("block---type--->"+type);  
        type="Insect父类块赋的值";  
    }  

}



public class Beetle extends Insect{
public String type="Beetle成员变量赋的值"; 
public Beetle() {

 System.out.println("Beetle构造器---type--->"+type);  
       type="Beetle构造器赋的值";  
}

public void t(){  
        System.out.println("t---type---->"+type);  
    }  
  
    {  
        System.out.println("block---type--->"+type);  
        type="Beetle块赋的值";  
          
    }  



public static void main(String []args) {

Beetle b=new Beetle();
b.t();
}
}

block---type--->Insect父类成员变量赋的值
Insect父类构造器--type-->Insect父类块赋的值
Insect父类构造器----type--->Insect父类构造器赋的值
block---type--->Beetle成员变量赋的值
Beetle构造器---type--->Beetle块赋的值
t---type---->Beetle构造器赋的值


根据上面程序执行顺序

1.成员变量赋值>>>块赋值>>>构造器赋值

 2.父类的块>>父类构造器>>自身块>>自身构造器


所以,程序的赋值步骤为

  1. 父类的静态变量赋值
  2. 自身的静态变量赋值
  3. 父类成员变量赋值
  4. 父类块赋值
  5. 父类构造器赋值
  6. 自身成员变量赋值
  7. 自身块赋值
  8. 自身构造器赋值
参考http://java-mzd.iteye.com/blog/838683


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值