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";
}
}这个编译时为什么会出错?
调试欢乐多
title+="World";
}title是null,不能+=运算.
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,所以最好开始的时候赋值为""
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";
}
}这个才是
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";
}
回答问题至少要经过推敲下吧。实际上System.out.println(null+"title");打印出来的是nulltitle,谁说不能运算,在一个构造函数中调用另外的构造函数要用this(),有参数就加参数。一个构造函数不能调用自己,只能调用别的构造函数。
当然是可以,只有你确实有需要调用这个构造函数的时候才用this();
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";
}
}
2.你写的代码里,无论是否调用无参构造函数都不影响结果,所以把最后一句改成title+="hello";应该才是你的本意吧。
3.+=处理字符串null的字符也还在,想把null去掉可以用title="";
它把Hello()当一个普通方法调用了,
找不到那个方法
才知道这样也可以,应该是调用的title.toString()方法吧
学习了