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比较的是两个对象的内容是否相同。