JAVA中==与equals的区别

本文介绍了Java中`==`和`equals()`方法的区别。`==`用于比较基本类型变量的值或引用类型的内存地址,而`equals()`在未重写时默认比较引用,但String类中已重写,用于比较字符串内容。当创建String对象时,虚拟机会检查常量池中是否存在相同值的对象,如果存在则直接引用,否则新建。因此,即使内容相同的两个String对象,如果实例不同,`==`会返回false,而`equals()`会根据内容决定结果。

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

==:判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型比较的是值引用数据类型比较的是内存地址

equals:它的作用也是判断两个对象是否相等,但是它一般有两种使用情况:

  • 情况1:类没有覆盖equals()方法。那么通过equals()比较该类的两个对象时,等价于通过“==”比较两个对象。
  • 情况2:类覆盖了equals()方法。一般,我们都覆盖equals()方法来比较两个对象的内容是否相等,若内容相等,则返回true(即,认为两个对象相等)。
  		String a = new String("ab");//a为一个引用
        String b = new String("ab");//b为另一个引用,与a的对象的内容一样
        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)) // false
            System.out.println("ab");
        if (42 == 42.0) { // true
            System.out.println("true");
        }

在这里插入图片描述

在这里插入图片描述
注意

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值