/*
代码块,显示初始化,构造函数初始化的执行顺序,
1.代码块和显示初始化的赋值都是在构造函数中执行的(java编译器完成的),而且优先于构造函数的赋值。
2.代码块和显示初始化的执行顺序是按照类定义中的前后顺序决定的。
3.编译时,java编译器将会把属性移动到最前面(但显示初始化是在构造函数中执行的)。
*/
class Demo7
{
public static void main(String[] args)
{
Test1 test1=new Test1();
Test2 test2=new Test2();
Test3 test3=new Test3();
Test4 test4=new Test4();
}
}
class Test1
{
int i=10000;
{
i=20000;
}
public test(){
i=30000;
}
//输出i为30000因为原则1
public void printi(System.out.println(i));
}
class Test2
{
public test(){
i=30000;
}
int i=10000;
{
i=20000;
}
//输出i为30000因为原则1
public void printi(System.out.println(i));
}
class Test3
{
int i=10000;
{
i=20000;
}
//输出i为20000因为原则2
public void printi(System.out.println(i));
}
class Test4
{
{
i=20000;
}
int i=10000;
//输出i为10000因为原则2
public void printi(System.out.println(i));
}
|
|