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

java 执行顺序

2014-02-20 11:37 169 查看
public class Test {                                                                  行1
public static Test t = new Test("a");                             行2
public int i = print(2);                                                       行3
{                                                                                         行4
    System.out.println("构造块");                                  行5
}                                                                                         行6
public Test(String str){                                                  行7
System.out.println("构造块"+str);                        行8
}                                                                                        行9
static                                                                                 行10
{                                                                                         行11
    System.out.println("静态块");                                  行12
}                                                                                        行13
public static int print(int i){                                           行14
System.out.println("print: "+i);                             行15
return i;                                                                    行16
}                                                                                        行17
public static void main(String args[]){                       行18

         Test t=new Test("b");                                                   行19

    }                                                                                            行20

}                                                                                                行21

结果:

print: 2      (结果:1)

构造块       (结果:2)

构造块a    (结果:3)

静态块      (结果:4)

print: 2      (结果:5)
构造块      (结果:6)

构造块b    (结果:7)

如果没有 行19  结果1-4 会输出,因为java 在对代码进行编译的时候,对静态代码进行初始化。

当调用new创建对象时,会先初始化class非静态变量,然后调用本类构造方法,所以在初始化 t 时,先调用print方法初始化非静态变量i,然后每次调用构造方法,都会先调用

构造块  代码,然后调用静态块(只调用一次)。

执行顺序:静态块 构造块 非静态变量 构造函数

对于静态块和静态属性或者非静态块和属性,初始化顺序决定于它们在代码中的顺序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息