(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
}