个人感觉关系运算符多用于基础数据类型间的使用,比较诸如int,char之类的,后面的2个方法多用于比较对象,equals()方法的重写是为了定制一个规则,满足这个规则就认为2个比较的对象是同一个,比方说在集合中有方法contains(Object obj),其背后调用的就是equals(),如果equals()返回true就说明集合中包含这个对象,compareTo()是为了比较2个对象的大小,比方说2只猫的比较,2只猫总有个大小之分,至于怎么样算大,怎么样算小,就看你在compareTo()方法中怎么规定的了,在集合中有排序函数,其背后调用的就是compareTo()方法。

解决方案 »

  1.   

     equals 是比较对象的是否相等 返回true或false
     compareTo 是比较对象的大小 不等于0
      

  2.   

    看看Object对象里面有没有这两个方法,如果有的话,则任何一个对象都可以用这实现这两个方法.当然也可以自己添加,不过一些JAVA提供的接口如果没有就不能改了.
      

  3.   

    多用来比较对象的,那么就应该对自定义类重写方法(如果你打算用来比较的话)。如果要用到compareTo()那么equals()也应该同时重写,除非你不打算比较对象。
      

  4.   

    看一下jdk的帮助文档,上面有继承结构,不是所有的对象都实现Comparable借口,equal方法也一样,尤其主机自己创建的对象
      

  5.   

    equals是Object提供的方法,用来判断两个实例是否相等,具体返回何值,要看调用equals方法时,该所属的实际类型的实现。关于它的用法,有一些约定,参考Effective Java一书。注意,你在你自己的类中重写equals时,同时一般也要重写hashCode方法。原因较复杂,和HashMap等利用hashCode的工具类有关,也可以参考此书。
    compareTo是Comparable接口的方法,它也有一些约定,可以参考JDK的API Reference。很多类型都实现了Comparable接口,比如String、BigDecimal、Integer等等。但是这不意味着这些类型可以拿来和任意类型进行比较,慎用。