用一段代码说明下
public class TestEquals_1
{
public static void main(String[] args)
{
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1 == s2);//输出结果是fasle
System.out.println(s2.equals(s1));//输出结果是true
}
}
先说下==,这是一个比较运算符,返回值是布尔型,比较的是比较对象本身.
1 == 2,表达式为假返回false.上述代码中 s1 == s2,比较的是s1,s2本身.s1,s2本身
是引用(也就是地址了)代表的是两个不同地址,肯定不相等.
再来看看equals方法,它是Object类中方法,其作用也等价于==.
但是,s2是一个String引用,调用的是String类中的equals方法,通过API查阅可知,该方法被重写了
比较的是s1,s2指向的内容:"abc".所以输出的是true.
|