| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2925 人关注过本帖
标题:为什么打印对象名称就是打印tostring方法的返回值
只看楼主 加入收藏
郭赛
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-12-9
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:7 
为什么打印对象名称就是打印tostring方法的返回值
刚开始学java,希望讲明白一点
搜索更多相关主题的帖子: 打印 名称 返回值 tostring 方法 
2020-05-04 09:00
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
toString()方法打印的是对象名称?不是个有返回值的方法吗?

剑栈风樯各苦辛,别时冰雪到时春
2020-05-04 09:12
郭赛
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-12-9
收藏
得分:0 
回复 2楼 林月儿
比如class A
A a = new A();
System.out.println(a)和System.out.println(s.toString())输出是一样的
2020-05-04 10:13
郭赛
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-12-9
收藏
得分:0 
回复 2楼 林月儿
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-05-04 10:21
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
嗯,都写这么多了,哪里不懂

剑栈风樯各苦辛,别时冰雪到时春
2020-05-04 17:24
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:10 
这是java的默认行为,每当我们打印一个对象引用时,它会在内部调用toString()方法。 因此,如果我们不在类中定义toString()方法,则调用Object.toString()

所有类默认继承Object,Object基类里的toString 方法返回该对象的字符串表示,其实该字符串内容就是对象的类型 +@+ 内存地址值。

由于 toString 方法返回的结果是内存地址,在打印一个对象时,其实就是打印了对象引用的地址,基于内部的默认行为,会自动调用重写后的toString或基类Object的toString方法输出

思考赐予新生,时间在于定义
2020-05-04 19:15
郭赛
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-12-9
收藏
得分:0 
回复 6楼 love云彩
谢谢,我大概懂了。
2020-05-05 00:49
hk666
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-5-27
收藏
得分:0 
回复 6楼 love云彩
回复一下,toString会打印出对象的内存地址说法并不正确,先看看Java API文档,其中关于Object.toString()有这样一段描述:@后面的是转换为十六进制的对象的哈希值。所以当我们创建大量的元素并进行哈希值比较时,@后面的值将会的可能冲突,这样Object.toString()返回的字符串也不可避免地重复了。“对象名+@+对象内存地址”这种说法肯定不对,因为内存地址肯定不会重复的。

[此贴子已经被作者于2021-5-27 11:46编辑过]

2021-05-27 11:45
快速回复:为什么打印对象名称就是打印tostring方法的返回值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022344 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved