compare、equal和==在比较基本数据类型和引用数据类型时有什么特殊意思

解决方案 »

  1.   

    == 比较基本数据类型的值(字符串除外)或比较引用数据类型的引用
    compare,equals 基本数据类型中没有 引用数据类型以引用对象的compare,equals方法为准
      

  2.   


    compare,equals关键就是看对象有没有重载compare,equals方法
    比如说String重载了equals方法,所以String的equals就是可以比较内容的,而不是比较地址的
      

  3.   

    == 比较基本数据类型的值(字符串除外)equals 比较两个对象时使用,如果不重载,默认是只有自己和自己比是正确的。
    如果重载equals,就有很多情况要注意了
    比如,要重载hashcode,equals如果true,那么hashcode要相同
    还有equals重载要遵守自反,传递,一致等约束条件,详细你可以查一下compare,需要继承Comparable接口,对于一些支持排序的容器,可以很方便的使用sort来排序,compareTo方法的实现注意事项和equals一致,也要遵守这些约束条件,不然会发生不可预料的错误。还有,有些容器的contains实现,用的不是equals返回true,而是compareTo返回0,重载或实现这俩个方法都需要注意。
      

  4.   

    简明地说就是:==:如果是基本类型就是比较数值(基本类型就是用这个),如果是引用类型就是比较地址(即是否为同一个对象)
    equals :当为引用类型的时候比较对象的值是否相等(一般比较是不是一样就是用这个的了)
    compare:也是比较,数值按大小,其它按字母顺序,如a.compare(b),根据大小或字母先后顺序,返回1,0,-1。0的时候就是相同或相等
      

  5.   

    我们老师说,==比较两方面,比较内容和内存地址是否相等,
    比较基本数据类型时,因为有池的存在,一般就是看内容相等就行
    比较引用数据类型时,用到new,即开辟新的内存空间,所以即使内容相等,但还是要看它的内存地址