在这个程序里为什么输出是cba呢,既然a,b,c都已经被" "上,应该直接输出abc啊
    public class Hello
    {
public static void main(String args[])
{
new Hello(3L);
}
public Hello(long x)
{
this((int)x);
System.out.print("a");
}
public Hello(int x)
{
this();
System.out.print("b");
}
public Hello()
{
System.out.print("c");
}
}

解决方案 »

  1.   

    肯定是cba啦,调用long型的构造函数,是去调用int型的构造函数,int型去调用无参的,结果不就这样吗
      

  2.   

    执行顺序!java很负责的,上一句没有执行完成(包括调用)是不会执行下一句的。
      

  3.   

    不就应该输出cba吗?先执行无参的构造函数,然后执行int型的构造函数,最后执行调long型的构造函数。
      

  4.   

    在本类型中的this是调用构造方法,程序中的this((int)x)是调用传一个int类型的构造方法,而this()是调用无参的构造方法,故结果为cba。
      

  5.   

    3楼太强了,另建议楼主去好好看看thinking in java的初始化与清理一章,相信会有收获的。
      

  6.   

    首先你传的是long型的,去执行long型的构造,但是long的构造第一句是执行int型的构造,而int型的构造第一句执行 无参的构造,再返回,结果就是cba了。