字符串关于==与equals的比较

String S1=new String("abc");

String s2="abc";

String s3="abc";

String s4=new String ("abc");

s1==s2 ; false;

s2==s3; true;

s1==s4 ;false;

s1.equals(s2);true;

== 是比较两个字符串的地址是否相等,而直接声明的字符串(不是new出来的)是放在一个字符串常量池里面,相同的地址是一样的,所以S2=S3是true。

其它的new出来的字符串都是单独的一个对象,所以地址是不相等的。

但是equals相对于字符串是重写了的,所以比较的是内容。

原文地址:https://www.cnblogs.com/hz0356/p/3960215.html