面试题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. 案例测试
相关推荐
空空kkk9 小时前
SpringBoot整合Thymeleaf
java·spring boot·spring
what丶k9 小时前
SQL三大核心查询语法(WHERE/ORDER BY/GROUP BY)综合运用指南
大数据·数据库·sql·mysql·面试
计算机毕业设计开发9 小时前
django高校公寓管理系统--附源码64226
java·c++·spring boot·python·spring cloud·django·php
季明洵9 小时前
Java中哈希
java·算法·哈希
组合缺一9 小时前
Claude Code Agent Skills vs. Solon AI Skills:从工具增强到框架规范的深度对齐
java·人工智能·python·开源·solon·skills
学海无涯书山有路9 小时前
Android ViewBinding 新手详解(Java 版)—— 结合 ViewModel+LiveData 实战
android·java·开发语言
jaysee-sjc9 小时前
【练习十】Java 面向对象实战:智能家居控制系统
java·开发语言·算法·智能家居
哪里不会点哪里.9 小时前
Spring Boot 启动原理深度解析
java·spring boot·后端
零基础的修炼9 小时前
算法---常见位运算总结
java·开发语言·前端
蜂蜜黄油呀土豆9 小时前
Java虚拟机内存模型解析与内存管理问题
java·jvm·内存管理·内存泄漏·内存溢出