public static void main(String[] args) {
/*
*这里实例化后,因为传的是一个整型的参数5,所以java编译器就会寻找带参构造函数是int类型的:Test2( int a ),而你又在该构造函数里用 this( "hello" )指向带参 *数为字符串的构造函数,所以java编译器也同样也去寻找与之相匹配的带参的构造函数:Test2( String s ),在Test2( String s )有用this()指向无参的构造函数,
*所以java编译器也去寻找这个无参的构造函数。
*/
主函数中:Test2 t = new Test2(5); 分析::首先是调用:构造-int, 而构造-int中有语句“this("hello")”,说明这句又调用了: 构造-String, 但是这里又有:Test2(String s)this.(); System.out.println(s); 。this()语句又调用了 :构造-空。
构造-空 输出“good-bye”, 然后再原路返回执行为执行的语句,输出 hello
不知道楼主明白否
作者: 王广丛 时间: 2012-6-12 19:43
这个问题首先要搞清楚构造方法中this的作用——调用该类中的构造方法。
明白了这一点事情就非常简单了,例如看你的例子:
Test2 t = new Test2(5);之后首先调用: Test2( int a ){ this( "hello" );} 这个构造方法,而这个构造方法调用了
Test2( String s ){
this();
System.out.println(s);
}
复制代码
这个,而Test2(String s)通过this()调用了无参的构造方法,这使得System.out.println("good-bye");执行输出good-bye,然后再执行
Test2( String s )中的System.out.println(s);输出hello。
希望对你有用,求加分