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方法
不要求一定生成不同的整数结果(但是,为不相等的对象生成不同的整数结果
可以提高哈希表的性能)。
注:文章全部内容是作者的学习经验总结,如果有不完美的地方,还请联系编者修改,亦或是你的疑惑编者在此处并未涉及到,也可以联系编者进行解答,完善。在此也欢迎更多的你加入我们。
加入我们,或是帮助我们改进,请扫: