日期:2014-05-20  浏览次数:20687 次

equals 方法到底如何实现的他和 ==不同 怎么实现
equals  方法到底如何实现的他和  ==不同 怎么实现

------解决方案--------------------

  public boolean equals(Object obj) {
return (this == obj);
  }

这是Object类里面的实现方法。
你不重写这个方法的话你就==号和equals是一样的效果。要实现不同效果要在每个类中按照自己的需求去重写,比如Integer方法中的equals方法就是这样的:

 public boolean equals(Object obj) {
if (obj instanceof Integer) {
    return value == ((Integer)obj).intValue();
}
return false;
    }


这里value是一个基本类型int,对于基本类型,==就是其字面量的比较了。你可以去看看Integer的源代码就清楚了,也可以去看看string类的源代码
------解决方案--------------------
再说直白点,通常就是用类中的一个或者多个属性的相同与否去衡量两个类equals与否
------解决方案--------------------
你要明白,两个对象到底是否相等
是根据需求而定的。
------解决方案--------------------
一楼讲的很清楚了。
1.equals()是Object的类,是一切类的方法!
2.如果不重写equals的话,作用是和==是相同的,都是比较的对象的引用;
3.我们一般的业务逻辑是需要重写Object的equals方法的,比较的内容就是对象持有的属性了。

------解决方案--------------------
引用:
value不是int型的么 怎么返回boolean型值呢?


return value == ((Integer)obj).intValue();

Integer的intValue()方法返回一个int值,将它与同样为int类型的value比较,如果相同则返回true,不同则返回false。
------解决方案--------------------
引用:
引用:Java code?123  public boolean equals(Object obj) {    return (this == obj);  }
这是Object类里面的实现方法。
你不重写这个方法的话你就==号和equals是一样的效果。要实现不同效果要在每个类中按照自己的需求去重写,比如Integer方法……

那也没关系呀,按照你自己的想法,你想怎么写就怎么写呀, 比如value是一个类,你也可以用value的属性去判断,也可以用value的==去判断呀, 还可以用value的equals。这完全取决于你的实际需求
------解决方案--------------------
primitive的8种类型 byte short int long float double boolean char比较值的大小
对象引用比较是否指同一对象 Objcet o1=new Object;o2=o1;那么o1==o2为真
equals想怎么写怎么写
------解决方案--------------------
    equals()是object的一个方法,用来比较两个对象的地址,但string和Integer重写了这个方法,所以这两个类的equals()方法是比较的两个对象的内容,至于其他的类,只要没重写equals方法的肯定还是继承的object类里的equals方法,那就是比较地址,即使对象内容一样,返回的还是false,默认的equals 是比较引用的,即比较对象的内存地址只有这样才能相等 。
  ==用于比较引用和比较基本数据类型时具有不同的功能:比较基本数据类型,如果两个值相同,则结果为true,而在比较引用时,如果引用指向内存中的同一对象,结果为true