为了账号安全,请及时绑定邮箱和手机立即绑定

求助求助,关于在java中equals()方法是怎么进行比较的?

求助求助,关于在java中equals()方法是怎么进行比较的?

手掌心 2021-05-19 18:15:08
RT 下面代码的结果是 false true想问下是为什么,equals()方法到底比较的是内存中的什么?public class tryit {public static void main(String[] args) {Value v1=new Value(100);Value v2=new Value(100);System.out.println(v1.equals(v2));Integer i1=new Integer(100);Integer i2=new Integer(100);System.out.println(i1.equals(i2));}}class Value{public Value(int a){i=a;} int i;}
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

因为你自己定义的Value类调用的equals是Object类的,此时的equals就相当于“==”;
而Integer的equals是重写了Object的equals,此时比较的是2个Integer对象的值。。。
如果你不重写equals,它比较的就是内存中的地址,也就是引用是否指向的是同一个对象。。。
如果有问题,请追问。。
希望可以帮助你

查看完整回答
反对 回复 2021-05-23
?
慕村9548890

TA贡献1884条经验 获得超4个赞

举个例子吧:
String a = "abc"; //不是空对象
boolean b = a.equals("abc"); //不会报错
String c = null; //空对象
boolean d = c.equals("abc"); //会报错
报不报错主要看调用equals方法的对象是不是null。
所以很多程序员会这么写程序:if ("".equals(a))...而不写成if (a.equals(""))...
原因是a有可能是null。

查看完整回答
反对 回复 2021-05-23
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信