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

关于静态变量,静态代码块,实例变量,实例代码块,构造函数的执行顺序的总结

2012-03-08 18:10 603 查看
大体上顺序是这样的:(也可以说是优先级,同一级的按顺序执行)

1 静态变量,静态代码块

2 实例变量,实例代码块

3 构造函数

public class Test{
public Test(){
System.out.println("构造方法被执行 5");
}

{
System.out.println("实例代码块被执行 3");          //实例代码块
}

private TestInstance ti = new TestInstance();          //实例变量

private static TestInstance ti1 = new TestInstance(1); //静态变量

static{
System.out.println("静态代码块被执行 2");          //静态代码块
}

public static void main(String[] args){
new Test();
}

}

class TestInstance{
public TestInstance(){
System.out.println("实例变量被构造 4");
}

public TestInstance(int i){
System.out.println("静态变量被构造 1");
}
}


执行顺序是: 1 2 3 4 5

另外有一点还要特别注意:在执行构造函数时,实例变量和实例代码块 会先被执行。

在附上一个把我引到这个问题的例子:

package com.wind.jdbc;

public class TestStaticCode {
private static TestStaticCode tsc = new TestStaticCode();
static{
System.out.println("4");
}
private InstanceVariable iv = new InstanceVariable();

private TestStaticCode(){
System.out.println("3");
}

public static void main(String[] args){
}
}

package com.wind.jdbc;

public class InstanceVariable {
static{
System.out.println("1");
}
public InstanceVariable(){
System.out.println("2");
}
}
正确顺序应该是: 1 2 3 4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐