首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

代码求输出,该如何解决

2012-07-26 
代码求输出Java codeclass A{static{System.out.println(A static block)}{System.out.print(Q)}pub

代码求输出

Java code
class A{static{System.out.println("A static block");}{System.out.print("Q");}public A(){System.out.println("x");}}class B extends A{static{System.out.println("B static block");}{System.out.print("W");}public B(){System.out.println("y");}}public class Test{static {System.out.println("begin");}{System.out.println("executing");}public static void main(String...args){A ab = new B();ab = new B();new B();new A();}}

代码如上,求输出结果以及原因

[解决办法]
输出:
begin
A static block
B static block
Qx
Wy
Qx
Wy
Qx
Wy
Qx

分析:
执行从Test中main函数开始。因此
1. 由于main在Test中,首先执行Test类的静态语句。输出"begin"
2. 首次执行new B(),由于B有基类A,因此依次执行A、B的静态语句。输出"A static block, B static block".
3. 同时,首次执行new B(),依次执行A、B中的动态语句和构造函数。输出Qx、Wy
4. 第二、第三次执行new B(),同上
5. 执行new A(). 输出Qx

热点排行