String中的“==“和“equals(Object obj)“方法的比较

String中的"=="和"equals(Object obj)"方法的比较

equals是判断两个变量或者实例指向同一个内存空间的值是不是相同
而==是判断两个变量或者实例是不是指向同一个内存空间
public static void main(String[] args) {
    String s0="abc";
    String s1="abc";
    String s2=new String("abcd");
    String s3=new String("abcd");
    //判断==  判断二者是否相等,相等则返回true,否则返回false
    System.out.println(s0==s1);//true 都引用了常量池的相同值
    System.out.println(s2==s3);//false 创建了两个不同的对象
    //判断equals 首先判断二者是否“==”,如果二者相等,则返回true;
    //其次,调用相关的hashCode()方法判断二者生成的hashCode码
    //是否相等,相等则返回true;如果上述两种情况都不成立,则返回false
    System.out.println(s0.equals(s1));//true 引用常量池相同值
    System.out.println(s2.equals(s3));//true 首先判断==,
      //不通过则判断hashCode码,由于hashCode码相同,所以结果为ture
    System.out.println(s2.hashCode());//2987074
    System.out.println(s3.hashCode());//2987074
  }
  注解:如果根据equals方法,两个对象是相等的,那么对这两个对象中
  的每个对象调用hashCode方法都必须生成相同的整数结果;如果根据equals
  方法,两个对象不相等,那么对这两个对象中的任一对象上调用hashCode方法
  不要求一定生成不同的整数结果(但是,为不相等的对象生成不同的整数结果
  可以提高哈希表的性能)。

注:文章全部内容是作者的学习经验总结,如果有不完美的地方,还请联系编者修改,亦或是你的疑惑编者在此处并未涉及到,也可以联系编者进行解答,完善。在此也欢迎更多的你加入我们。

加入我们,或是帮助我们改进,请扫:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值