请教一个初级问题

老俊说技术 2009-06-28 06:54:18

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";

}

}

这个编译时为什么会出错?
...全文
31 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
longq121 2009-07-01
  • 打赏
  • 举报
回复
学习了
shp19900510 2009-07-01
  • 打赏
  • 举报
回复
String 类的对象是不可变的对象,所以你那个 title += "World" ; 这句代码后 title 仍然没变的 !
tg008007x3 2009-06-30
  • 打赏
  • 举报
回复
站在编译器的角度想想,它会不会去找Hello()方法捏(它可不知道Hello是不是一个构造方法,也没有那么聪明检查完没有这个方法再来检查构造器,可能这需要不断完善吧),那么事情可能变得比较美好了。。。
弘石 2009-06-30
  • 打赏
  • 举报
回复
title+="World";
才知道这样也可以,应该是调用的title.toString()方法吧
学习了
dreamhyz 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Yedy2000 的回复:]
引用 9 楼 chen0754_0661 的回复:
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=…
[/Quote]

俺赞同这种说法
yuhongpingimu 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xdbjzhhh 的回复:]

它把Hello()当一个普通方法调用了,
找不到那个方法
[/Quote]agree
「已注销」 2009-06-30
  • 打赏
  • 举报
回复

它把Hello()当一个普通方法调用了,
找不到那个方法
彷徨的蜗牛 2009-06-29
  • 打赏
  • 举报
回复
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";

}

}

liuxin0369 2009-06-29
  • 打赏
  • 举报
回复
可以设置String title = "";设置为空字符串
Yedy2000 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 WYhack 的回复:]
带参数的构造函数中没有this();也可以吧!!!
[/Quote]

当然是可以,只有你确实有需要调用这个构造函数的时候才用this();
Yedy2000 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chen0754_0661 的回复:]
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";

}

[/Quote]

回答问题至少要经过推敲下吧。实际上System.out.println(null+"title");打印出来的是nulltitle,谁说不能运算,在一个构造函数中调用另外的构造函数要用this(),有参数就加参数。一个构造函数不能调用自己,只能调用别的构造函数。
chen0754_0661 2009-06-29
  • 打赏
  • 举报
回复
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";

}

舷Kelvin 2009-06-29
  • 打赏
  • 举报
回复
1.如果你想调用无参构造函数,要用this()
2.你写的代码里,无论是否调用无参构造函数都不影响结果,所以把最后一句改成title+="hello";应该才是你的本意吧。
3.+=处理字符串null的字符也还在,想把null去掉可以用title="";
WYhack 2009-06-28
  • 打赏
  • 举报
回复
带参数的构造函数中没有this();也可以吧!!!
micsolaris 2009-06-28
  • 打赏
  • 举报
回复


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";

}

}



这个才是
micsolaris 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zla85 的回复:]
构造函数不能显试调用哈,会自动调用的

把Hello();去掉就可以了
[/Quote]
说错了,你说的自动调用是调用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,所以最好开始的时候赋值为""
老俊说技术 2009-06-28
  • 打赏
  • 举报
回复
已解决,谢谢
swandragon 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zla85 的回复:]
构造函数不能显试调用哈,会自动调用的

把Hello();去掉就可以了
[/Quote]

正解
bigbug9002 2009-06-28
  • 打赏
  • 举报
回复
我不对
bigbug9002 2009-06-28
  • 打赏
  • 举报
回复
public Hello(){
title+="World";
}

title是null,不能+=运算.
加载更多回复(1)
小男孩尼克是个中学生,他每天都用手机和朋友通电话,发信息,上网。而且还从网上下载手机游戏来玩。 有一天,尼克从朋友那里听说,不光可以下载别人制作好的手机应用,而且还可以用一种叫做JAVA的东西来制作自己的手机应用程序。好奇心很强的尼克,真想马上就能自己制作应用程序,于是便去请教住在附近的精通手机应用和JAVA知识的JAVA博士…… 这可不是低幼读物哦,这是NEC-MobileFriend带给我们的手机JAVA入门讲座!适合所有人阅读,没有学习过编程也可以!只要你对自己编写手机游戏感兴趣! 这套讲座以小主人公尼克和JAVA博士对话的形式,配合丰富生动的插图,一步一步,由浅入深,由概念到实作地逐渐教会你手机JAVA开发的方方面面,本站强烈推荐! 讲座目录: 初级第一讲: 什么是JAVA? 介绍手机Java和编程的基础概念。 初级第二讲: 制作Java应用的环境 介绍如何制作Java应用的环境。 初级第三讲: 终端上运行 介绍JAVA的构造,并在终端上实际运行。 初级第四讲: 编程基础1 介绍编程里最重要的概念――变量和数据型。 初级第五讲: 编程基础2 介绍编程里最重要的概念――条件分歧和重复。 初级第六讲: 编程基础3 介绍编程里最重要的概念――排列和方法。 初级第七讲: 初级制图 -画图?` 介绍如何在终端上制作图画。 初级第八讲: 介绍如何使用终端的Key Button 介绍如何使用终端的Key Button 初级第九讲: 什么是object指向? 介绍object指向的相关知识。 初级第十讲: 动 画 介绍怎么使用动画使图像“动”起来。 初级第十一讲: 动画2 介绍Java程序里面的音乐。 初级第十二讲: 声 音 介绍使用动画制作简单的游戏程序。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧