先來(lái)看一下 == 和 equals 的區(qū)別:
java中默認(rèn)的equals方法實(shí)現(xiàn)如下:
- public boolean equals(Object obj) {
- return (this == obj);
- }
值類型,用==判斷相等性。對(duì)象引用的話,==判斷引用指向的對(duì)象是否是同一個(gè)。==是判斷兩個(gè)變量或?qū)嵗遣皇侵赶蛲粋€(gè)內(nèi)存空間。 equals是判斷兩個(gè)變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同 。
equals是Object的成員函數(shù),有些類會(huì)覆蓋這個(gè)方法,用于判斷對(duì)象的等價(jià)性。例如String類。
- String s1 = "abc"+"def";
- String s2 = new String(s1);
- System.out.println("s1==s2? " + (s1==s2));
- System.out.println("s1.equals(s2)? "+s1.equals(s2));
- String s3 = "abc";
- String s4 = "abc";
- System.out.println("s3==s4? "+(s3==s4));
- System.out.println("s3.equals(s4)? "+s3.equals(s4));
輸出:
- s1==s2? false
- s1.equals(s2)? true
- s3==s4? true
聯(lián)系客服