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

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;}

手掌心
浏览 137回答 2
2回答

叮当猫咪

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

慕村9548890

举个例子吧: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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Python