Java 在什么情况下要重写toString
一个程序Sets=newHashSet();……System.out.print(s);另一程序Mapm=newHashMap();……System.out.print(...
一个程序Set s = new HashSet();……System.out.print(s);
另一程序Map m = new HashMap();……System.out.print(m);
同样的new一个对象,同样都是打印对象。为什么Set s 要重写toString方法,而m不需要。 展开
另一程序Map m = new HashMap();……System.out.print(m);
同样的new一个对象,同样都是打印对象。为什么Set s 要重写toString方法,而m不需要。 展开
5个回答
展开全部
两个都重写toString了吧。你查查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,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吧。
希望你能理解。谢谢,有不懂的再问。
2018-07-31 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
首先说一下,什么情况下要重写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}
System.out.println(“age:”+student.getAge)。
这样再toString就直接反回你想要的格式。
通过查api就可以知道HashSet的toString是把s的值格式化成[*, * ,*],就是给s的加个中括号,而且用逗号分开。
而HashMap的toString是把m的值格式化成{key1=value1,key2=value2,key3=value3}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当你需要打印对象,但又不希望显示内存地址,而是显示内容的时候,set打印会打印出地址,而map会把内容打印出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要打印对象,但又不希望显示内存地址,而是显示内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你需要输出对象里面的内容
就可以重新toString实现
就可以重新toString实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询