你查查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吧。希望你能理解
所以你打印出来的是那样的格式,这就是重写toString的作用,具体请看api吧。希望你能理解
解决方案 »
- 读取一个文件存进一个字符串里遇到的问题
- [菜鳥]java poi excel 怎樣拿圖中這個資料
- java生成.txt文件GB2312编码出现乱码
- 有几个链接 一个链接默认已经点击 档点击其他某个链接 这个链接回到原来的状态怎么做?
- 我用java编了一个三重密码验证,请各位高手看一下哪里还需要改进
- java 获取当地时间
- 哥哥帮忙
- UDP Socket 问题请教
- 只好重新问一次:java如何作report?
- 请问再在redhat7.1上如何安装jdk1.3.0_02,本人安装后始终不对?
- 求助,win8.1安装java后,不能正常运行
- JDBC中Statement s = c.createStatement() 一句的疑问?
1、hashcode
2、equals
3、toString
同时实现这三个方法有一个要求,既是,被定义为相同数据的两个对象,这三个方法表现必须一致:既是
如果a.equals(b)==true的情况下,a.hashcode()==b.hashcode()返回true;a.toString()==b.toString()也要返回true。
private String name = "";
public String toString() {
return String.format("<User: name=%s>", name);
}
}logger.debug("current user: " + user);