一、equals()和「==」的區別
在Java中,equals()方法用於比較兩個字符串的內容是否相等,而「==」用於比較兩個字符串的引用是否相等。
String s1 = "Hello"; String s2 = "Hello"; String s3 = new String("Hello"); System.out.println(s1.equals(s2)); // true System.out.println(s1.equals(s3)); // true System.out.println(s1 == s2); // true System.out.println(s1 == s3); // false
上面的代碼中,s1和s2都是直接賦值的字符串常量,它們的引用指向同一個字符串對象。s3是通過new關鍵字創建的新的字符串對象,它的引用指向一個新的字符串對象。
當我們使用equals()方法比較s1和s2、s1和s3時,返回的結果是true,因為它們的內容都相等。當使用「==」比較s1和s2、s1和s3時,s1和s2的引用相等,所以返回true,而s1和s3的引用不相等,所以返回false。
二、使用equals()方法進行字符串比較
在實際開發中,我們通常使用equals()方法來比較兩個字符串的內容是否相等。
String s1 = "Hello"; String s2 = "hello"; System.out.println(s1.equals(s2)); // false System.out.println(s1.equalsIgnoreCase(s2)); // true
上面的代碼中,s1和s2的內容是不同的,所以s1.equals(s2)返回false。如果我們只是想比較兩個字符串的內容是否相等,而不考慮大小寫,可以使用equalsIgnoreCase()方法。
三、使用「==」進行字符串比較
雖然使用equals()方法比較字符串內容更加準確,但在某些情況下,使用「==」進行字符串比較也是可以的。
String s1 = "Hello"; String s2 = "Hello"; String s3 = new String("Hello"); System.out.println(s1 == s2); // true System.out.println(s1 == s3.intern()); // true
上面的代碼中,當我們將s3調用intern()方法後,它的引用指向的是字符串常量池中的字符串對象,與s1、s2指向的字符串對象相同,所以s1 == s3.intern()返回true。
四、equals()和「==」的性能比較
由於equals()方法比較的是字符串的內容,比較的過程會涉及到遍歷字符串,因此在一定程度上會影響程序的運行效率。而使用「==」進行字符串比較,只需比較兩個字符串的引用,效率會更高。
但是,從正確性和可讀性的角度來考慮,建議大家使用equals()方法進行字符串比較。
五、小結
在Java中,使用equals()方法比較字符串內容是否相等是更加準確和可讀的做法。如果要比較字符串的引用是否相等,可以使用「==」運算符。但是,由於避免出現錯誤和提高可讀性的角度,建議大家儘可能使用equals()方法進行字符串比較。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/158231.html