黑马程序员技术交流社区

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

作者: 陈贺    时间: 2013-7-23 22:25
标题: 关于toString的小问题
为什么用普通类模拟枚举时,要在枚举类中复写toString才能打印出枚举的值呢?
别的类中也需要吗?

作者: 陈贺    时间: 2013-7-25 13:42
object类里的toString只是字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。所以当你要想按照你想要的格式去一些对象的时候,就需要重写toString了。比如一个Student对象,直接toString肯定是一个hash码。然而你想得到的比如是:name:***,age:***。这时就重写toString就是在toString里写:System.out.println(“name:”+student.getName);
System.out.println(“age:”+student.getAge)。
这样再toString就直接反回你想要的格式。
作者: 曹奎    时间: 2013-7-25 13:50
直接使用System.out.println()打印对象的引用名字的时候  jvm自动调用对象的toString方法  若是不覆盖toString 那么会调用默认的toString即Object对象的toString  覆盖之后就是调用的你覆盖的toString了 那么就是你覆盖的toString返回什么就打印什么
作者: 施大勇    时间: 2013-7-25 15:09
用普通类模拟枚举类时,类中的每一个成员都是这个类的一个实例,般来说,会将其设置为static ,这样可以方便外部通过类名调用,该类中是否用toString()方法,取决于你想干什么。Object 类中的toString()方法原型是 public String toString(){}; 重写时一定要注意返回值类型,如果你是在此方法体中有打印语句,返回值类型还是需要String的,例如public void toString()  此方法不是重写的Object中方法,而是一个你自已定义的方法。




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