你真的懂== 、equals么?
大家都知道比较String的内容时,就用equals,但你知道么?时因为equals重写了Object的equals的方法,Object的equals比较的是地址,String类重写了比较的为内容。所以你一直认为的equals比较的是内容时不对的。
大家有还知道if有时你也用来比较String,比如String s1=“a”; String s2=“a”; if(s1s2){System.out.println(“也是可以输出的”)};这里其实不是比较的内容,再创建s1时"a"的地址就存到了常量池,当你在创建s2=“a”;时引用的地址就是s1的所以if(s1s2)是可以运行的就是true。
上面的解释啰嗦给新手看的,你若学习了几天了可以直接看代码
public class test {
//== equals的区别用法
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1="a";
String s2="a";
System.out.println(s1.equals(s2)); //这里比较的就是内容,因为String类重写了Object的equals方法不再比较地址,输出true
if(s1==s2) System.out.println("相等的");//这里比较的还是地址,s1,s2使用的同一个一地址,因为s1创建时就地址存到了常量池,再次创建"a"的对象时就会直接引用常量池有的地址
}
}