Java中==和equals的区别和联系

1.作用

  •  ==: 判断两个对象的地址是否相同, 即判断两个对象是否属于同一对象。注:基本数据类型==比较的是值, 引用数据类型==比较的是内存地址。
  • equals():判断两个对象是否相等, 可分为以下两种情况
    1. 类没有覆盖equals()方法, 则通过equals()比较该类的两个对象时, 等价于使用"=="比较这两个对象。
    2.  类覆盖了equals()方法,这种情况下则是比较两个对象的内容是否相等,对内容相同则返回true。
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类型的对象时, JVM会在厂里池中查找有没有存在的值和要创建的值相同的对象, 如果有就把它赋给当前引用,如果没有常量池中重新创建一个String对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值