常用基础面试题:equals()方法与==的区别

本文详细解析了Java中==运算符与equals()方法的差异,包括基本数据类型和引用数据类型的比较方式,以及String类对equals()的重写实现。通过深入探讨equals()在不同类中的应用,帮助读者理解对象比较的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“==“运算符,对于基本数据类型,比较的是值;对于引用数据类型,比较的就是两个对象的地址;
而equals()是Object类中的方法,默认和==相同都是比较的是对象的地址,但是String,Math,Integer,Double等封装类中都对equals()方法进行了不同程度的重写,比较的是值。

Object类中的equals方法:
public boolean equals(Object obj) {
        return (this == obj);
}

String类的equals方法:
 public boolean equals(Object anObject) {
        if (this == anObject) {//如果地址相同两string肯定相等
            return true;
        }
        //如果两个对象等价,前提是它们一定为相同的类型
        //判断类型是否相同
        if (anObject instanceof String) {
			//类型相同均为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) {
                //逐个比较字符是否一样,完全符合,则返回ture,一旦不对,返回false;
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                //逐个比较后字符都一样且长度相等,则两字符串肯定相等。
                return true;
            }
        }
        return false;//(不是相同类型)或者(是相同类型但是长度不等),那么两字符串的值不相等。返回false.
    }
//java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值