1、public class Test2 extends Test1
{
{
System.out.print("1");
}
Test2()
{
System.out.print("2");
} static
{
System.out.print("3");
} {
System.out.print("4"); } public static void main(String[] args)
{
new Test2(); } } class Test1
{ Test1()
{
System.out.print("5");
} static
{
System.out.print("6");
}
} 2、public class Test3 extends Test4
{
int i=30; Test3()
{
print();
i=40;
} public static void main(String[] args)
{
System.out.println(new Test3().i);
} void print()
{
System.out.println(i);
} } class Test4
{
int i=10; Test4()
{
print();
i=20;
} void print()
{ System.out.println(i);
}
} 这两个题目非常变态,大家看看会输出什么.知道的,谁能给我解释下具体的原因,感激不尽..............
{
{
System.out.print("1");
}
Test2()
{
System.out.print("2");
} static
{
System.out.print("3");
} {
System.out.print("4"); } public static void main(String[] args)
{
new Test2(); } } class Test1
{ Test1()
{
System.out.print("5");
} static
{
System.out.print("6");
}
} 2、public class Test3 extends Test4
{
int i=30; Test3()
{
print();
i=40;
} public static void main(String[] args)
{
System.out.println(new Test3().i);
} void print()
{
System.out.println(i);
} } class Test4
{
int i=10; Test4()
{
print();
i=20;
} void print()
{ System.out.println(i);
}
} 这两个题目非常变态,大家看看会输出什么.知道的,谁能给我解释下具体的原因,感激不尽..............
解决方案 »
- 关于聊天室,客户端与服务器的连接
- hello java !!的新问题,急求!!!!
- 关于报警联动的多线程实现设计问题
- 有谁告诉我,工作后,是不是都有了自己的包包?
- eclipse中的第一次sliverlight插件(eclipse4sl)
- rmi老问题
- 能用APPLET读取服务器端文件内容吗?如何实现?
- 对String.indexOf(String str,int fromIndex);和lastIndexOf(String str, int fromIndex);的困惑!
- 我想横着打,但他总是竖着打印。我已经设置了pageformat.setOrientaion(PageFormat.LANDSCAPES) ,问什么不行?
- 做测试需要掌握哪些知识?
- 问个简单的问题,大家别仍鸡蛋哈~~~
- 对象数组问题
里面有关于static变量,实例变量,构造函数的调用相关问题
是比较复杂
static匿名方法>匿名方法>构造函数2.
变量初始化>构造函数
但是初始化流程如下Test3()入口->Test4()入口->Test4的变量->Test4()执行
->Test3变量->Test3()执行然而很巧的是你在Test3和Test4中用了同一个名字的方法,造成了override
所以调用的是Test3的print()方法
此时Test3.i还没有被初始化,所以是0
应该是这样,我明白了.....