==与equals()比较

(1)对于字符串常量,==比较的是内存中的首地址,如果不是同一个对象,==返回false。equals()比较的是内容,如:

String s1="abc",s2="abc";
String s3=new String("abc");
String s4=new String("abc");
s1=s2;  //true
s1.equals(s2);  //true
s3.equals(s3);  //true
s3==s4;  //false

(2)对于非字符串变量,equals()比较的是内存的首地址,==比较的也是首地址。此时,两者等价,都是比较两边指向的是不是同一个对象。内存地址不同则对象不同。

class Sample{};
public static void main(String[] args){
        Sample v1=new Sample();
       Sample v2=new Sample();
        System.out.println(v1.equals(v2));  //false
        System.out.println(v1==v2);  //false
}

你可能感兴趣的:(==与equals()比较)