面试题1:==和equals的比较

面试题:==和equals的区别?

  1. ==
    ==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
  2. equals
    object中默认也是采用== 比较。通常会重写。如果没有重写,通常equals和==也是差不多的
java 复制代码
public boolean equals(Object obj) {
        return (this == obj);
}

例如String的重写

java 复制代码
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }

其中StringUTF16的比较方法如下:

java 复制代码
```java
@HotSpotIntrinsicCandidate
    public static boolean equals(byte[] value, byte[] other) {
        if (value.length == other.length) {
            int len = value.length >> 1;
            for (int i = 0; i < len; i++) {
                if (getChar(value, i) != getChar(other, i)) {
                    return false;
                }
            }
            return true;
        }
        return false;
    }

实际本质上重写的是比较字符串里面每个字符是否相等

  • 如果长度不相等,直接返回false
  • 如果长度相等,就逐个比较字符,一旦就不相等,返回false,如果所有都相等返回true
  1. 案例测试
相关推荐
Skilce9 分钟前
ZrLog 博客系统部署指南(无 War 包版,Maven 构建 + 阿里云镜像优化)
java·阿里云·maven
敲代码的嘎仔16 分钟前
Java后端开发——真实面试汇总(持续更新)
java·开发语言·程序人生·面试·职场和发展·八股
迈巴赫车主25 分钟前
蓝桥杯20560逃离高塔
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
泯仲33 分钟前
Ragent项目7种设计模式深度解析:从源码看设计模式落地实践
java·算法·设计模式·agent
wangchunting1 小时前
Jvm-垃圾收集器
java·开发语言·jvm
weixin_464307631 小时前
QT智能指针
java·数据库·qt
架构师沉默1 小时前
程序员如何避免猝死?
java·后端·架构
xlp666hub1 小时前
【Linux驱动实战】:标准的按键控制LED驱动写法
面试
Zzxy1 小时前
快速搭建SpringBoot项目并整合MyBatis-Plus
java·spring boot
星如雨グッ!(๑•̀ㅂ•́)و✧1 小时前
WebFlux onErrorContinue 和 onErrorResume使用详解
java·人工智能