社区
非技术区
帖子详情
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
它们区别在哪?谢谢!
...全文
111
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 的这几个
问题
可以说明白吗?
前言上一篇文章 如何妙用 Spring 数据绑定? ,灵魂追问 环节留下了一个有关
equals
和 hashcode
问题
。基础面试经常会碰到与之相关的
问题
,这不是一个复杂的
问题
,但很多朋友都苦于说明他们二者的关系和约束,于是写本文做单独说明,本篇文章将循序渐进 ( 通过举例,让记忆与理解更轻松 ) 说明这些让你有些苦恼的
问题
,Let's go .......面试
问题
1.
Java
里面有了 ...
Java
中
的Object类(重写
equals
方法
的相关
问题
)
本文主要讲解了
Java
中
的Object类及其
中
的相关
方法
,以及重写
equals
方法
的相关
问题
Java
程序设计 重写
equals
方法
遇到父类与子类的比较
问题
当我们写了一个类名叫Father并重写了
equals
方法
时,我们或许会这样写 static class Father { String name = "fat"; @Override public boolean
equals
(Object obj) { if (obj instanceof Father) { Father that = (Father) obj; if (this.name == that.name || this.name.
equals
(that.name)
java
数组使用
equals
()
方法
报空指针
问题
在学习使用数组的过程
中
遇到一个
问题
,用scanner为数组赋值后,使用
equals
()
方法
报空指针错误 import
java
.util.Scanner; public class Test { public static void main(String[] args) { // 新建数组存放3个DVD信息 String[] names = new String[6]; nam
java
中
的API,学习object的类
中
equals
()
方法
中
的
问题
,
一、什么是API 即:Application Programing interface应用程序接口。就是
java
jdk
中
提供给我们使用的类,已经封装好的,直接拿来用就行了。 二、Object类 object类是所有类的父类,在lang包
中
,lang包不用导入。 接口
中
没有构造
方法
,全是抽象
方法
。 三、
equals
()
方法
学习
中
遇到的
问题
。 第一个
问题
:利用多态向下转型,进行比...
非技术区
23,404
社区成员
70,507
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章