黑马程序员技术交流社区

标题: 关于toString的.. [打印本页]

作者: 李杰鹏    时间: 2012-12-22 13:30
标题: 关于toString的..
本帖最后由 李杰鹏 于 2012-12-23 10:55 编辑

这个程序一直不太理解..
public class TestToString {
public static void main(String[] args) {
Dog d = new Dog();
System.out.println("d:=" + d);
}
}

class Dog {
public String toString() {
return "I'm a cool dog!";
}
}

知道的麻烦帮我一下..谢谢..
作者: 董将    时间: 2012-12-22 13:43
public String toString() {
return "I'm a cool dog!";
}
这段小程序的意思是调用String的toString 方法,返回一个字符串
作者: 周超    时间: 2012-12-22 13:55
所有对象都有这个方法,因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法回答补充:写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用例子1:
public class A{   
public String toString()
{return "this is A";}
}
如果某个方法里面有如下句子:A obj=new A();System.out.println(obj);会得到输出:this is A
例子2:public class A{   
public String getString()
{return "this is A";}//toString改个名字试试看
}
A obj=new A();System.out.println(obj);会得到输出:xxxx@xxxxxxx的类名加地址形式System.out.println(obj.getString());
会得到输出:this is A看出区别了吗,toString的好处是在碰到“println”之类的输出方法时会自动调用,不用显式打出来
作者: 焦健    时间: 2012-12-22 14:09
public class TestToString {
public static void main(String[] args) {
Dog d = new Dog();
System.out.println("d:=" + d);
}
}

class Dog {
public String toString() {
return "I'm a cool dog!";
}
}
在这里写toString方法是为了复写Object类中的toString方法,
因为调用toString方法返回的是一种字符串表现形式,应是一个简明但易于读懂的信息表达式。
而Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。
对我们来说这样一个字符串没有多大的意义,所以我们要复写toString方法,建议所有子类都重写此方法。

作者: 冯伟超    时间: 2012-12-22 14:40
System.out.println("d:=" + d);这句话实际上是这么写的System.out.println("d:=" + d.toString());
在原先的Dog类中你写了一个toString方法,其实就是覆写了父类Object中的toString方法。
关键就是这个了,其他的你应该明白。
作者: 李杰鹏    时间: 2012-12-22 14:42
......恩..知道了.谢谢..




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2