==是判断两个变量或实例是不是指向同一个内存空间,用来比较对象引用(地址)。
equals是判断两个变量或实例所指向的内存空间的值是不是相同,比较对象存储内容(值)
例如:
String str1 = new String("abc");
String str2 = new String("abc");
str1 == str2 false
比较引用地址。
str1.equals(str2) true.
比较字符串内容。
String str1 = "abc";
String str2 = "abc";
str1 == str2 true
str1.equals(str2) true
这个结果是字符串池的原因,和数据库连接池类似。
不要使用==运算符来检测两个字符串是否相等!它只是测定两个串是否存储在同一个位置。当然,如果串是在同一个位置,那么它们必定相等。但是确实有可能吧串的多个拷贝存放在不同的地方。