1、==比较的是内存中是不是同一个对象,equals比较的是内存中的对象的内容是否一样
2、举例
String s1 = "abc";
String s2 = s1;
String s3 = new String("abc");
String s4 = new String("abc");
String s5 = "abc";
System.out.println("== comparison : " + (s1 == s5));
System.out.println("== comparison : " + (s1 == s2));
System.out.println("Using equals method : " + s1.equals(s2));
System.out.println("== comparison : " + s3 == s4);
System.out.println("Using equals method : " + s3.equals(s4));
结果是:
== comparison : true == comparison : true Using equals method : true false Using equals method : true
可知String定义两个相同内容的常量的时候,其实是创建了一个对象,然后两个都指向这个对象。如果是String定义两个内容相同的变量的时候,在内存中创建的是两个对象;
另外也可以看出==比较的是是否是同一个对象,而equals比较的是两个对象的内容是否相同。
原文:https://www.cnblogs.com/saifei1125/p/11653708.html