首页 新闻 会员 周边 捐助

java初学程序

0
悬赏园豆:50 [已解决问题] 解决于 2014-04-10 19:12

public class Tester {
 int var;
 Tester(double var) {
  this.var = (int)var;
 }
 Tester(int var) {
  this("hello");
 }
 Tester(String s) {
  this();
  System.out.print (s);
 }
 Tester() {
 
System.out.print("goodbye");  
 }
 public static void main(String[] args) {
  Tester t = new Tester(5);
 }

 
 
}

主要想问问各位为什么输出答案是goodbyehello,而不是hellogoodbye

java-001的主页 java-001 | 初学一级 | 园豆:4
提问于:2014-04-09 22:21
< >
分享
最佳答案
0
public class Tester {
    int var; 
    ①Tester(double var) { 
        this.var = (int)var; 
    } 
    ②Tester(int var) { 
        this("hello");//在这里this表示自己,那么调用带String参数的构造方法③,那么看3
    } 
    ③Tester(String s) { 
        this(); //在这里调用无参数的构造方法④,那么输出“goodbye”,由于用的是print,所以无换行
        System.out.print (s); //然后自己再输出s,也就是“hello”,所以最终结果是“goodbyehello”
    } 
    ④Tester() { 
        System.out.print("goodbye");   
    } 
    public static void main(String[] args) { 
        Tester t = new Tester(5); //实例化对象,调用int参数的构造方法②,那么看2
 } 
}
收获园豆:20
幻天芒 | 高人七级 |园豆:37207 | 2014-04-10 14:00
其他回答(6)
0

Tester(String s) { 
  this(); 
  System.out.print (s); 
 } 就是因为这里先调用了默认无参的构造函数,输出了goodbye然后再输出s

收获园豆:10
Mushroom0417 | 园豆:327 (菜鸟二级) | 2014-04-10 07:55
0

public class Tester {
 int var; 
 Tester(double var) { 
  this.var = (int)var; 
 } 
 Tester(int var) { 
  this("hello"); 
 } 
 Tester(String s) { 
  this(); 
  System.out.print (s); 
 } 
 Tester() { 
 
System.out.print("goodbye");   
 } 
 public static void main(String[] args) { 
  Tester t = new Tester(5); 
 }

 
 
}

//分析:

Tester t = new Tester(5);//首先进入含int型参数的构造方法  Tester(int var) { 

然后执行this("hello");  然后执行含字符串参数的构造方法(Tester(String s) { 接下来) 和 Mushroom0417说法一样的

收获园豆:5
名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2014-04-10 08:54
0

楼主好可怜入这行

[秦时明月] | 园豆:738 (小虾三级) | 2014-04-10 10:12
0

调用顺序问题吧。

怎么看那个:

this(); 
System.out.print (s);

这里都是先走this()的啊。

this()就相当于无参的,然后打印了“goodbye”,然后System.out.print (s);打印了“Hello”

连起来就是“goodbyeHello”

收获园豆:5
seaconch | 园豆:4823 (老鸟四级) | 2014-04-10 11:54
0
 1 package headfirst.command.simpleremote;
 2 
 3 public class Tester {
 4     int var;
 5 
 6     Tester(double var) {
 7         this.var = (int) var;
 8     }
 9 
10     // 1. 参数为int 的构造函数
11     Tester(int var) {
12         // 2. 调用参数为 String 的构造函数
13         this("hello");
14     }
15 
16     // 2.参数为 String 的构造函数
17     Tester(String s) {
18         // 3. 先调用不带参数的构造函数
19         this();
20         // 5. 输出hello
21         System.out.print(s);
22     }
23 
24     // 3. 不带参数的构造函数
25     Tester() {
26         // 4. 输出 goodbye 不换行
27         System.out.print("goodbye");
28     }
29 
30     public static void main(String[] args) {
31         // 1. 调用参数为int 的构造函数
32         Tester t = new Tester(5);
33     }
34 }

看看注释吧,this 是用来调用构造函数的,希望对你有帮助。

收获园豆:10
beyondchina | 园豆:680 (小虾三级) | 2014-04-10 19:03
0

Tester t = new Tester(5);

----》进入 

Tester(int var) { this("hello");}//无输出

this("hello");------》进入

Tester(String s) { //此时s="hello"

  this();  ---->调用 Tester() { System.out.print("goodbye"); }//输出“goodbye”无换行
  System.out.print (s); //输出“hello”
 } 

所以结果输出:goodbyehello

Halower | 园豆:1723 (小虾三级) | 2014-04-10 19:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册