社区
非技术区
帖子详情
java中关于equals方法的问题
fw_zhong
2006-06-06 11:48:07
Test t = new Test();
Test tt = new Test();
为什么t.getClass().equals(tt.getClass())返回true,而t.equals(tt) 返回false
它们区别在哪?谢谢!
...全文
109
4
打赏
收藏
java中关于equals方法的问题
Test t = new Test(); Test tt = new Test(); 为什么t.getClass().equals(tt.getClass())返回true,而t.equals(tt) 返回false 它们区别在哪?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fw_zhong
2006-06-09
打赏
举报
回复
谢谢,二位的回答
OnlyFor_love
2006-06-06
打赏
举报
回复
1。基本类型,对象引用都在栈中; 而对象本身在堆中
2。"=="比的是两个变量在栈内存中的值,而即使变量引用的是两个对象,“==”比的依旧是变量所拥有的“栈内存地址值”。
3。equals()是每个对象与生俱来的方法,因为所有类的最终基类就是Object(除去Object本身);而equals()是Object的方法之一。
也就是说equals()方法来自Object类
观察一下Object中equals()的source code:
public boolean equals(Object obj) {
return (this == obj);
}
注意 “return (this == obj)”
this与obj都是对象引用,而不是对象本身。所以equals()的缺省实现就是比较
对象引用是否一致
所以要比较两个对象本身是否一致,须自己编写代码覆盖Object类里的equals()的方法.
来看一下String类的equals方法代码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
OnlyFor_love
2006-06-06
打赏
举报
回复
楼上说的对
zling1981
2006-06-06
打赏
举报
回复
t.getClass()和 tt.getClass() 的值都是Test ,所以equals的值当然相等
t和tt是两个不同的对象,所以equals的值不相等
重写
equals
方法
的hashcode_
Java
equals
和 hashCode 的这几个
问题
可以说明白吗?
本文围绕
Java
中
equals
和hashcode
方法
展开。解释了有==运算符为何还需
equals
方法
,探讨了二者相等的
问题
及重写约束,说明了重写场景,分析了重写hashcode时常用31的原因,还给出总结和灵魂追问,帮助理解二者关系与约束。
Java
程序设计 重写
equals
方法
遇到父类与子类的比较
问题
探讨了在
Java
中
equals
方法
的实现细节,特别是如何正确判断对象类型以避免子类与父类误判为相等
问题
,提出了使用getClass()
方法
替代instanceof的解决方案,并强调了重写
equals
方法
时同步重写hashCode的重要性。
Java
中
的Object类(重写
equals
方法
的相关
问题
)
本文介绍了
Java
中
Object类,它是所有类的根类。详细阐述了Object类的常用
方法
,如
equals
、hashCode、toString等的作用和默认实现。还对比了
equals
与==的区别,同时强调在子类
中
重写
equals
方法
时,必须重写hashCode
方法
,以确保二者返回值逻辑一致。
java
数组使用
equals
()
方法
报空指针
问题
本文探讨了在
Java
中
使用数组结合Scanner输入时出现的空指针异常
问题
。详细解析了如何通过判断数组元素是否为空来避免
equals
()
方法
引发的异常,并提供了修正后的代码实现。
java
中
的API,学习object的类
中
equals
()
方法
中
的
问题
,
本文深入探讨
Java
中
API的概念及Object类的重要性,特别聚焦于
equals
方法
的使用与重写技巧,包括解决向下转型和类型检查等常见
问题
。
非技术区
23,404
社区成员
70,507
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章