重写equals()和CompareTo()的基本类汇总

重写equals()和CompareTo()的基本类汇总

equals()

Boolean

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

    public int hashCode() {
   
        return Boolean.hashCode(value);
    }

    public static int hashCode(boolean value) {
   
        return value ? 1231 : 1237;
    }

Byte

    public boolean equals(Object obj) {
   
        if (obj instanceof Byte) {
   
            return value == ((Byte)obj).byteValue();
        }
        return false;
    }
    public byte byteValue() {
   
        return value;
    }

    public int hashCode() {
   
        return Byte.hashCode(value);
    }

    public static int hashCode(byte value) {
   
        return (int)value;
    }

Character

    public boolean equals(Object obj) {
   
        if (obj instanceof Character) {
   
            return value == ((Character)obj).charValue();
        }
        return false;
    }
    public char charValue() {
   
        return value;
    }

    public int hashCode() {
   
        return Character.hashCode(value);
    }
    public static int hashCode(char value) {
   
        return (int)value;
    }

这里比较使用的是==,比较地址值

Double

Double的queals方法需要注意两个特殊情况两个

  1. Nan做比较时返回的是true
  2. +0.0和-0.0做比较时,返回false
    equals返回结果取决于两个参数的doubleToLongBits返回值是否相等
    本文只关注equals和compareTo,具体的正数、负数、Nan的区别,doubleToLongBits和hashCode(见我的Java.Lang.Double文章)//TODO
    /**
     * exceptions:
     * <ul>
     * <li>If {@code d1} and {@code d2} both represent
     *     {@code Double.NaN}, then the {@code equals} method
     *     returns {@code true}, even though
     *     {@code Double.NaN==Double.NaN} has the value
     *     {@code false}.
     * <li>If {@code d1} represents {@code +0.0} while
     *     {@code d2} represents {@code -0.0}, or vice versa,
     *     the {@code equal} test has the value {@code false},
     *     even though {@code +0.0==-0.0} has the value {@code true}.
     * </ul>
     * This definition allows hash tables to operate properly.
     */
    public boolean equals(Object obj) {
   
        return (obj instanceof Double)
               && (doubleToLongBits(((Double)obj).value) ==
                      doubleToLongBits(value));
    }

    public int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值