java中的equals用法(Integer Character Boolean String源码中equals方法)

object类是所有类的父类,这里定义了equals方法。可以看到里边用的是==也就是比较的两个对象的内存地址。object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。

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

所以八种基本数据类型直接用==比较即可
对应的包装类(八种基本数据类型不面向对象,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类)
byte --------->Byte
short---------->Short
int-------------->Integer
long------------>Long
float------------>Float
double---------->Double
boolean-------->Boolean
char------------->Character
八种基本数据类型:
在这里插入图片描述
来个例子:Integer里重写的equals方法(代码解释)。
在这里插入图片描述

public static void main(String[] args) {
      Integer a=new Integer(1);
      Integer b=new Integer(1);
      //==实际的意思是比较地址,new出来两个对象,开辟出来两块地址,地址肯定不同,所以是false
      System.out.println(a==b);
        //包装类里的equals方法:判断是否实例化
        //public boolean equals(Object obj) {
        //        if (obj instanceof Integer) {
        //            将包装类obj转为int类型,判断value是否等于1。前后的value都是1,所以true
        //            return value == ((Integer)obj).intValue();
        //        }
        //        return false;
        //    }
      System.out.println(a.equals(b));
    }

Character里的equals方法:

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

Boolean里的equals方法。

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

String里的equals方法(先比较地址,其次比较字符串值。)

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

包装类与基本数据类型的相互转换

    public static void main(String[] args) {
        //int转Integer
        int a=1;
        Integer b=a;
        
        //Integer转int
        int d=b.intValue();
        
        //char转Character
        char e='a';
        Character f=e;
        
        //Character转char
        char j=f.charValue();

        Boolean h=true;
        h.booleanValue();

        Double s=1.242;
        s.compareTo(s);
    }

仔细看都有一个对应的方法,方法名字就是
基本数据类型Value();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值