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

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

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
    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方法
  不要求一定生成不同的整数结果(但是,为不相等的对象生成不同的整数结果
  可以提高哈希表的性能)。

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

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

猜你喜欢

转载自blog.csdn.net/qq_40298231/article/details/89379812