您的位置:首页 > 编程语言 > Java开发

JAVA中执行顺序

2015-11-03 14:57 501 查看
用<<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.父类的块>>父类构造器>>自身块>>自身构造器

所以,程序的赋值步骤为

父类的静态变量赋值
自身的静态变量赋值
父类成员变量赋值
父类块赋值
父类构造器赋值
自身成员变量赋值
自身块赋值
自身构造器赋值

参考http://java-mzd.iteye.com/blog/838683
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: