class Hello  {
    String title;
    int value;
    public Hello(){ title+ = " world";}
    public Hello(int value){ this.value = value; title = "Hello"; Hello();}}public class testHello
{
    public static void main (String [] args)
    { 
        Hello c = new Hello(5);
         System.out.println(c.title);    }
}
What is the result?
A. Hello
B. Hello World
C. Compilation fails.
D. Hello World 5
E. The code runs with no output.
F. An exception is thrown at runtime.请讲讲分析思路,以及这道题目 在考考生的哪个知识点?谢谢

解决方案 »

  1.   

    C 编译错误
    1 Hello()没有这个方法
    如果调用构造器,应该是this();而且必须在第一个语句,比如
    public Hello(int value) {
        this();
        this.value = value;
        title = "Hello";
      }2  title+ = " world"; 字符串变量错误,不允许+号,是不是你笔误
    title += " world" 
    这样是可以的!
      

  2.   

    答案是C在一个构造方法里调用本类的另外一个构造方法只能用this(xx, xx, xx);
    并且调用只能放在方法的第一行。
    class Hello
    {
        String title;
        int value;
        public Hello()
        {
            title += " world";
        }    public Hello(int value)
        {
            this.value = value;
            title = "Hello";
            Hello();
        }
    }
    可用的调用方法class Hello
    {
        String title;
        int value;
        public Hello()
        {
            title += " world";
        }    public Hello(int value)
        {
            this();
            this.value = value;
            title = "Hello";
        }
    }
      

  3.   

    呵呵 应该是title += " world", 我抄错啦。这道题目应该是考的第一个问题,我想问问
    题目中 不是有两个 Hello();吗? 为什么第二个 不能使用 Hello(); 而要使用 this();呢?
      

  4.   

    方法是有返回值描述符的,至少是void
    没有的,且名字和类名相同的,就是构造器!
    Hello() 明显是构造器,因为他没有返回值描述符
      

  5.   

    除了可以调用本类的构造方法外,还可以调用父类的构造方法。
    如果你没显式调用的话,默认也会调用super(); 并且也是在第一行。
      

  6.   

    C,
    着重考构造函数的知识点,
    一个类可以有多个构造函数,
    这样可以在建造的时候,不同的初始化
    比如class Hello  {
        String title;
        int value;
        public Hello(){  }
        public Hello(int value){ }}
    构造可以new Hello();
    或者 new  Hello(5);
    但是,构造函数是不能在调用构造函数的,
    你很难想象编译器在分配内存,调用构造函数初始化后,还得再初始化,
    任何类都初始化一次
      

  7.   

    public Hello(){ title+ = " world";}
    public Hello(int value){ this.value = value; title = "Hello"; Hello();}
    這是2個構造器
    你下面還想new他?
    c