Java中什么时候需要重写toString()方法

躺平的菜鸟啊 2019-07-29 08:23:17
你查查JDK的API就知道了。首先说一下,什么情况下要重写toString,object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。所以当你要想按照你想要的格式去字符串一些对象的时候,就需要重写toString了。比如一个Student对象,直接toString肯定是一个hash码。然而你想得到的比如是:name:*,age:*。这时就重写toString就是在toString里写:System.out.println(“name:”+student.getName);System.out.println(“age:”+student.getAge)。这样再toString就直接反回你想要的格式。通过查api我们就可以知道HashSet的toString是把s的值格式化成[*,*,*],就是给s的加个中括号,而且用逗号分开。而HashMap的toString是把m的值格式化成{key1=value1,key2=value2,key3=value3} 所以你打印出来的是那样的格式,这就是重写toString的作用,具体请看api吧。希望你能理解
...全文
1216 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
树成 2019-07-31
  • 打赏
  • 举报
回复
按照java开发的既定规范,任何和数据有关的类定义都需要重写三个方法: 1、hashcode 2、equals 3、toString 同时实现这三个方法有一个要求,既是,被定义为相同数据的两个对象,这三个方法表现必须一致:既是 如果a.equals(b)==true的情况下,a.hashcode()==b.hashcode()返回true;a.toString()==b.toString()也要返回true。
tq1086 2019-07-31
  • 打赏
  • 举报
回复
我重载toString()都是为了方便写日志。

public class User {
    private String name = "";
    public String toString() {
        return String.format("<User: name=%s>", name);
    }
}

logger.debug("current user: " + user);

62,614

社区成员

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

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