public class Hello{
String title;
int value;
public static void main(String[] args){
Hello h=new Hello(5);
System.out.println(h.title);
}
public Hello(){
title+="World";
}
public Hello(int v){
Hello();
this.value=v;
title="hello";

}

}这个编译时为什么会出错?

解决方案 »

  1.   

     public Hello(){
            title+="World";
        }title是null,不能+=运算.
      

  2.   

    构造函数不能显试调用哈,会自动调用的把Hello();去掉就可以了
      

  3.   

    说错了,你说的自动调用是调用super的。而对以构造函数Hello(int v)并不会自动调用Hello().如果你要调用的话应该写成public class Hello{
        String title;
        int value;
        public static void main(String[] args){
            Hello h=new Hello(5);
            System.out.println(h.title);
        }
        public Hello(){
            title+="World";
        }
        public Hello(int v){
           // Hello();
           //this();
            this.value=v;
            title="hello";
            
        }
        
    }而且title默认是null,所以最好开始的时候赋值为""
      

  4.   

    public class Hello{
        String title;
        int value;
        public static void main(String[] args){
            Hello h=new Hello(5);
            System.out.println(h.title);
        }
        public Hello(){
            title+="World";
        }
        public Hello(int v){
           // Hello();
           this();
            this.value=v;
            title="hello";
            
        }
        
    }这个才是
      

  5.   

    带参数的构造函数中没有this();也可以吧!!!
      

  6.   

    String title;--在声明title时没有给它赋值
        int value;
        public static void main(String[] args){
            Hello h=new Hello(5);
            System.out.println(h.title);
        }
        public Hello(){
            title+="World";---因为title未赋值,所以不对title进行运算
        }
        public Hello(int v){
            Hello();
            this.value=v;
            title="hello";
            
        }
        
      

  7.   


    回答问题至少要经过推敲下吧。实际上System.out.println(null+"title");打印出来的是nulltitle,谁说不能运算,在一个构造函数中调用另外的构造函数要用this(),有参数就加参数。一个构造函数不能调用自己,只能调用别的构造函数。
      

  8.   


    当然是可以,只有你确实有需要调用这个构造函数的时候才用this();
      

  9.   

    可以设置String title = "";设置为空字符串
      

  10.   

    public class Hello{
        String title;
        int value;
        public static void main(String[] args){
            Hello h=new Hello(5);
            System.out.println(h.title);
        }
        public Hello(){
            title+="World";
        }
        public Hello(int v){
           // Hello();
           this();
            this.value=v;
            title="hello";
            
        }
        
    }
      

  11.   

    1.如果你想调用无参构造函数,要用this()
    2.你写的代码里,无论是否调用无参构造函数都不影响结果,所以把最后一句改成title+="hello";应该才是你的本意吧。
    3.+=处理字符串null的字符也还在,想把null去掉可以用title="";
      

  12.   


    它把Hello()当一个普通方法调用了,
    找不到那个方法
      

  13.   

    站在编译器的角度想想,它会不会去找Hello()方法捏(它可不知道Hello是不是一个构造方法,也没有那么聪明检查完没有这个方法再来检查构造器,可能这需要不断完善吧),那么事情可能变得比较美好了
      

  14.   

    title+="World";
    才知道这样也可以,应该是调用的title.toString()方法吧
    学习了
      

  15.   

    String 类的对象是不可变的对象,所以你那个 title += "World" ; 这句代码后 title 仍然没变的 !