就是说 == 比较 的是两个String对象是不是指向同一个对象 equals比较的是两个String对象的值是不是一样的
在Java中String里面的=判断,是在内存地址上是不同的,不是同一个对象,=比较的就是不是同一个对象。任何new出来的类型变量都不会“相等”。
Java中存在一个串池,
s和s1引用的是同一个字符串对象.
String s = “hello”;
String s1 = “hello”;
这两句只会创建一个"hello"字符串放入串池里面,s和s1只是这个字符串的两个引用而已.
用oop来解释的话:
java中的==是用来判断对象所使用的内存地址是不是同一个,进而判断是不是同一个对象。例如 objA == objB
注意这里是同一个对象才会是true,如果不是同一个对象,哪怕两个对象所有属性都相同也会返回false。
而equals则是一个方法,你可以为自己的类编写equals方法来判断是不是相等。这里String类就提供了equals方法来判断两个String对象是不是相同,而不是去判断两个String对象是不是同一个对象,因为我们一般使用中,只关心两个字符串内容相同与否,而不会关心是不是同一个对象。