出自: http://syniii.blog.sohu.com/81538246.html
一个简单的例子,对于了解块很有帮助哦,呵呵~~~
1.所有静态的(无论其是变量还是块)都按顺序执行.
2.所有的非静态的块都在静态的(无论其是变量还是块)后执行.
3.所有的块(无论是静态的还是非静态的)都在构造之前执行.
4.静态块在类被加载到内存后就开始执行
5.非静态块是在创建对象时,构造之前被调用
测试代码:(仅供参考)
public class TestStaticMode
{
public TestStaticMode()
{
System.out.println("in structure");
}
static int i = 0;
{
System.out.println("in first no static i=" + i);
}
static {
i = 1;
System.out.println("in static i=" + i);
}
{
System.out.println("in second no static i=" + i);
}
public static void main(String args[])
{
TestStaticMode testStaticMode = new TestStaticMode();
System.out.println("i=" + i);
}
}
输出为:
in static i=1
in first no static i=1
in second no static i=1
in structure
i=1
一个简单的例子,对于了解块很有帮助哦,呵呵~~~
1.所有静态的(无论其是变量还是块)都按顺序执行.
2.所有的非静态的块都在静态的(无论其是变量还是块)后执行.
3.所有的块(无论是静态的还是非静态的)都在构造之前执行.
4.静态块在类被加载到内存后就开始执行
5.非静态块是在创建对象时,构造之前被调用
测试代码:(仅供参考)
public class TestStaticMode
{
public TestStaticMode()
{
System.out.println("in structure");
}
static int i = 0;
{
System.out.println("in first no static i=" + i);
}
static {
i = 1;
System.out.println("in static i=" + i);
}
{
System.out.println("in second no static i=" + i);
}
public static void main(String args[])
{
TestStaticMode testStaticMode = new TestStaticMode();
System.out.println("i=" + i);
}
}
输出为:
in static i=1
in first no static i=1
in second no static i=1
in structure
i=1