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,然后每次调用构造方法,都会先调用
构造块 代码,然后调用静态块(只调用一次)。
执行顺序:静态块 构造块 非静态变量 构造函数
对于静态块和静态属性或者非静态块和属性,初始化顺序决定于它们在代码中的顺序。
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,然后每次调用构造方法,都会先调用
构造块 代码,然后调用静态块(只调用一次)。
执行顺序:静态块 构造块 非静态变量 构造函数
对于静态块和静态属性或者非静态块和属性,初始化顺序决定于它们在代码中的顺序。
相关文章推荐
- Java中(静态)变量、(静态)代码块的执行顺序
- java多线程编码,顺序执行(同步)
- JAVA方法SQL语句执行顺序
- Java中静态代码块、构造代码块构造函数的执行顺序
- java中运行时执行顺序和测试类加载顺序
- 关于Java中try-catch-finally-return的执行顺序
- java中静态代码块,构造代码块,构造方法,main方法的执行顺序
- Java中异常处理-finally和return执行顺序
- Java 静态语句块、语句块、构造函数执行顺序
- Java核心代码(二)构造+语句执行顺序
- Java普通代码块,构造代码块,静态代码块,成员变量的执行顺序的代码实例
- java类中代码的执行顺序
- java中finally与return的执行顺序详解
- java实例变量初始化各语句执行顺序
- 由阿里巴巴一道笔试题看Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序
- JAVA之for循环执行顺序附Demo
- eclipse debug java程序,为什么不按照行顺序执行?
- java中try{}catch{}和finally{}的执行顺序问题
- java 有return的情况下try catch finally的执行顺序
- Java类中构造方法的执行顺序和变量初始化