Java包装类中的equals方法

基本数据类型包装类中的equals方法用于比对相同包装类中的值是否相等,如果两者比较的包装类类型不同则返回false;

1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,

2.两个包裝类型的对象进行“==”比较时,如果有一方的对象是new获得的,返回false,因为引用地址不同。

3、两个基本型的包装类型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。

4、包装类型调用equals()方法,但是参数是基本类型,这时候,先会进行自动装箱,将基本型转换为其包装类型,若类型不同返回false,
若装箱后类型相同,则比较值,如果值相同,则返回true,否则返回false。

源码如下:

Byte

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

Short

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

Integer

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

Long

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

Float

 public boolean equals(Object obj) {
    
    
        return (obj instanceof Float)
               && (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
    }

Double

 public boolean equals(Object obj) {
    
    
        return (obj instanceof Double)
               && (doubleToLongBits(((Double)obj).value) ==
                      doubleToLongBits(value));
    }

Charater

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

Boolean

  public static boolean parseBoolean(String s) {
    
    
        return ((s != null) && s.equalsIgnoreCase("true"));
    }

Guess you like

Origin blog.csdn.net/qq_43842093/article/details/123586308