当前位置: 首页 > news >正文

基础面试题:== 与 equals 详解

​java中的数据类型分为: 基本数据类型和引用数据类型

基础类型

4种整数类型:int、long、byte、short
2种浮点数类型:float、double
1种字符类型:char
1种布尔类型:boolean

引用数据类型

1.类
2.接口
3.数组

对于基本类型来说,== 比较的是值是否相等
对于引用类型来说,== 比较的是两者在内存中存放的地址(堆内存地址)

public class test1 {
    public static void main(String[] args) {
        String a = new String("ab"); // a 为一个引用
        String b = new String("ab"); // b为另一个引用,对象的内容一样
        String aa = "ab"; // 放在常量池中
        String bb = "ab"; // 从常量池中查找
        if (aa == bb) // true
            System.out.println("aa==bb");
        if (a == b) // false,非同一对象
            System.out.println("a==b");
        if (a.equals(b)) // true
            System.out.println("aEQb");
        if (42 == 42.0) { // true
            System.out.println("true");
        }
    }
}

说明:

String 中的 equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。
当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。

总结
equals()和==的区别:

基本类型:对比它们的值是否相等
引用类型:对比它们的内存地址是否相等
equals()
引用类型:默认情况下,对比它们的地址是否相等;如果equals()方法被重写,则根据重写过程来比较

相关文章:

  • 用ArrayList(解决约瑟夫问题)
  • 基础面试题:程序, 进程,线程,纤程,管程,超线程详解
  • 基础面试题:hashCode 与 equals
  • 2017.04.19 有趣的机械原理图
  • 详解TCP的三次握手与四次挥手及面试题(很全面)
  • 笔记APP中的TOP5
  • 深入理解BIO、NIO、AIO以及应用场景
  • 二分查找 Day08
  • QPS、TPS、并发用户数、吞吐量
  • Java创建多线程的四种方式以及优缺点
  • mydate97时间插件集成jquery插件
  • MySQL分库分表相关面试知识点
  • centos7的web环境安装配置
  • 算法必须掌握几种方法
  • 算法面试题:数组中的逆序对
  • create-react-app做的留言板
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java基本数据类型之Number
  • php的插入排序,通过双层for循环
  • React+TypeScript入门
  • SpringBoot几种定时任务的实现方式
  • Vim 折腾记
  • Xmanager 远程桌面 CentOS 7
  • 第2章 网络文档
  • 机器学习学习笔记一
  • 如何实现 font-size 的响应式
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 译米田引理
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​ArcGIS Pro 如何批量删除字段
  • ​力扣解法汇总946-验证栈序列
  • #if 1...#endif
  • #mysql 8.0 踩坑日记
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (多级缓存)多级缓存
  • (附源码)计算机毕业设计ssm电影分享网站
  • ****Linux下Mysql的安装和配置
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET : 在VS2008中计算代码度量值
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET与 java通用的3DES加密解密方法
  • ::
  • @AutoConfigurationPackage的使用
  • [APIO2015]巴厘岛的雕塑
  • [BIZ] - 1.金融交易系统特点
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [Hive] 常见函数