Java中的==和equals方法都是用于比較兩個(gè)對(duì)象是否相等的,但它們的實(shí)現(xiàn)方式有所區(qū)別。
public class Example { public static void main(String[] args){ String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); System.out.println(str1 == str2); // true System.out.println(str1 == str3); // false System.out.println(str1.equals(str3)); // true } }
在上面的代碼中,str1和str2都指向了同一個(gè)字符串常量,因此它們的引用地址是相同的,所以使用==比較時(shí)會(huì)返回true。而str3是一個(gè)新的字符串對(duì)象,因此它的引用地址和str1不同,使用==比較時(shí)會(huì)返回false;但是它們存儲(chǔ)的字符串內(nèi)容是相同的,因此使用equals方法比較時(shí)會(huì)返回true。
總的來(lái)說(shuō),使用==比較兩個(gè)對(duì)象時(shí),比較的是它們的引用地址是否相同;而使用equals方法比較兩個(gè)對(duì)象時(shí),比較的是它們存儲(chǔ)的內(nèi)容是否相同。