java新人问大神引用问题。

是gakki的迷弟啊 2019-10-20 12:01:35
自定义了一个Point类,实例化出来两个对象,为什么他们的引用是一样的?
...全文
183 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiawenhe123 2019-11-26
  • 打赏
  • 举报
回复
默默使用池化技术,你后面藏了什么?
weixin_40599844 2019-11-25
  • 打赏
  • 举报
回复
你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是
getClass().getName() + '@' + Integer.toHexString(hashCode())
hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的
即心即佛 2019-11-08
  • 打赏
  • 举报
回复
System.out.print(p1)和System.out.print(p1.toString())是等价的,因为,你没有重写Point的toString方法,所以,调用Object类的toString,Object类的toString源码如下: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } public native int hashCode();
qq_38081432 2019-10-23
  • 打赏
  • 举报
回复
引用 2 楼 weixin_45772463 的回复:
[quote=引用 1 楼 qybao 的回复:]你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是 getClass().getName() + '@' + Integer.toHexString(hashCode()) hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的
我的意思是为什么两个实例化出来对象的引用会一样,不是应该不相同吗?[/quote] 一楼正解,你这样问应该是问为什么他们地址会一样吧? 他们地址是不一样的; 输出一样的值,是因为object类hashcode这个方法的原因,这个方法的返回值和内存地址没有等价关系,更具体的可以百度一下。
IT_熊 2019-10-23
  • 打赏
  • 举报
回复
引用 6 楼 IT_熊 的回复:
奇怪,应该是不一样的才对。
出现一样的只有楼主知道把

楼主的hashcode显示只有3位,三楼的那位咋就那么长呢?
IT_熊 2019-10-23
  • 打赏
  • 举报
回复
奇怪,应该是不一样的才对。
出现一样的只有楼主知道把
wowpH 2019-10-20
  • 打赏
  • 举报
回复
我的是不一样的。。。
wowpH 2019-10-20
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是 getClass().getName() + '@' + Integer.toHexString(hashCode()) hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的
我的意思是为什么两个实例化出来对象的引用会一样,不是应该不相同吗?
qybao 2019-10-20
  • 打赏
  • 举报
回复
你没有重写tostring方法,所以就会调用父类object的tostring方法,该方法的具体实现是 getClass().getName() + '@' + Integer.toHexString(hashCode()) hashcode也没有重写,也是调用父类的hashcode方法,所以结果就是一样的

62,621

社区成员

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

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