在学习《Java学习笔记(JDK6)》这本书中有几个不明白的问题想请教各位!

JHBProgrammer 2009-09-27 10:43:57
118页->在Java中如果==被使用于两个引用名称时,它是用于比较两个引用名称是否引用自同一对象...(蓝字)

120页->不可以用==来比较两个字符串的字符内容是否相同.(蓝字)
120页->如果要比较两个字符串对象的字符值是否相同,要使用equals()方法...(蓝字)



174页(第一段)->Object默认的equals()本身是比较对象的内存地址是否相同.....

个人理解:
==:比较的是两个对象的内存地址(引用类型指向堆中的地址)。
equals():比较的是两个字符串的字符值是否相同。

174页
我的理解是,在Java中equals()本身是比较对象的内存地址是否相同,当我们改写后则变成比较的是两个字符串的字符是否相同。

...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwenso 2009-09-27
  • 打赏
  • 举报
回复
好好学习,加油
  • 打赏
  • 举报
回复
不客气,呵呵。

实际上看看 Object#equals 方法的源代码就明白了 :-)

public boolean equals(Object obj) {
return (this == obj);
}
JHBProgrammer 2009-09-27
  • 打赏
  • 举报
回复
十分感谢bao110908老师!
  • 打赏
  • 举报
回复
对的,你的理解完全正确!

所有类基类 Object 中的 equals 方法就是使用 == 的,我们一般会在需要进行对象比较的类中改写这个方法。
followith 2009-09-27
  • 打赏
  • 举报
回复
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;
}

62,621

社区成员

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

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