学习Java的时候遇到一个问题?
Integer i1=new Integer(51);
Integer i2=new Integer(51);
System.out.println(i1==i2); --》false
System.out.println(i1.equals(i2)); -->true
我知道i1和i2都是两个Integer对象的引用,他们指向的是对象的堆内存地址,每个对象都是标识唯一的,返回false我可以理解。但是第二个理解不了,我网上查了Object类的equals方法源码,网上答案只是:return this==object(形参);那样的话第二个打印结果不可能是:true !!! 猜测的结果是equals方法源码不只有那一句,应该还有一句:如果地址不一致,则比较其内容。
注意:i1引用的可不是String对象,所以不可能调用String重写的equals方法。
请各位楼主帮我解析下,object的equals方法和逻辑运算符“==”比较的不是对象的引用吗?难道基本数据类型有不同的比较,是网上源码错了还是其他地方错了!求源码 !
呼如林
相关分类