面试题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. 案例测试
相关推荐
亓才孓21 小时前
深浅拷贝--Java
java·开发语言·windows
ShaderJoy21 小时前
ShaderJoy —— 《对称镜面下的绞肉机》【算法悬疑短文】【Python】
算法·leetcode·面试
潲爺21 小时前
Java笔记总结
java·开发语言·笔记·学习
jyd012421 小时前
Spring Boot 文件上传大小限制问题:413 与 MaxUploadSizeExceededException 解决方案
java·spring boot·后端
絔宝21 小时前
Eclipse配置 Maven 国内镜像
java·eclipse·maven
虾说羊21 小时前
Spring Boot前后端分离项目部署
java·spring boot·后端
技术狂人1681 天前
(六)大模型算法与优化 15 题!量化 / 剪枝 / 幻觉缓解,面试说清性能提升逻辑(深度篇)
人工智能·深度学习·算法·面试·职场和发展
愤怒的代码1 天前
从开发调试到生产上线:全维度 Android 内存监控与分析体系构建
android·java·kotlin
悟能不能悟1 天前
java HttpServletRequest 设置header
java·开发语言