对java中实例化对象输出涉及到tostring()方法

a_king_long 2016-12-26 06:55:07
下面有一段代码我对这个代码中那句对对象的输出有点不是很懂,为什么对对象的输出结果toString方法中返回的结果?
这是thinkingi in java中的一个例子,虽然下面有讲解但是我看完了还是不是很懂,求大侠告知下这是为什么?
谢谢啦!
public final class SprinklerSystem {
private String valve1, valve2, valve3,valve4;
private WaterSource source = new WaterSource();
private int i;
private float f;

public String toString()
{
return "valve1 ="+valve1+" "+
"valve2 ="+valve2+" "+
"valve3 ="+valve3+" "+
"valve4 ="+valve4+"\n"+
"i = "+ i+" "+"f = "+f+" "+
"source = " + source;
}

public static void main(String[] args) {
SprinklerSystem sprinklers = new SprinklerSystem();
System.out.println(sprinklers);
System.out.println("*****************");
System.out.println(sprinklers.toString());
}
}

class WaterSource{
private String s;
public WaterSource() {
System.out.println("WaterSource()");
s = "Constructed";
}
public String toString(){
return s;
}
}
...全文
379 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuolinqing111 2016-12-26
  • 打赏
  • 举报
回复
1.结果:你重写了toString()方法,所以System.out.println(*******************)前后输出是一样的。 2. 输出对象默认就调用了toString()方法,所以System.out.println(sprinklers)=System.out.println(sprinklers.toString()) 3.如果不重写toString()方法,输出的将是 类名+@+HashCode
liny_ 2016-12-26
  • 打赏
  • 举报
回复
没有区别,System.out.println()默认调用的就是toString()方法,如果没toString()方法,则调用Object的toString()方法,你在类里面相当于把toString()方法进行了重写,所以两次输出都调用的类的toString()方法,结果应该是一样的
a_king_long 2016-12-26
  • 打赏
  • 举报
回复
那个System.out.println(*******************)和他后面那句toString方法的调用只是我想测试下会有什么区别

62,628

社区成员

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

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