关于STRING的“==”与equals()方法

6 篇文章 0 订阅
2 篇文章 0 订阅

先写一个例子,

           String a = "a"+"b"+1;
        String b = "ab1";
        System.out.println(“运行结果:”a == b);

这个例子的结果是什么呢?

运行结果:true


为什么呢??

首先,来看看“==”,如果是引用(Reference),比较的就是引用的值,“引用的值”可以被认为是对象的逻
辑地址。如果两个引用发生“==”操作,就是比较相应的两个对象的地址值是否一样。换
一句话说,如果两个引用所保存的对象是同一个对象,则返回true,否则返回false(如果
引用指向的是null,其实这也是一个JVM赋予给它的某个指定的值)。


equals()方法,首先是在Object类中被定义的,它的定义中就是使用“==”方式来匹配
的(这一点大家可以参看Object类的源码)。也就是说,如果不去重写equals()方法,并且
对应的类其父类列表中都没有重写过equals()方法,那么默认的equals()操作就是对比对象
的地址。
equals()方法之所以存在,是希望子类去重写这个方法,实现对比值的功能,类似的,
String就自己实现了equals()方法。为什么要自己去实现呢?因为两个对象只要根据具体业
务的关键属性值来对比,确定它们是否是“一致的或相似的”,返回true|false即可。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值