在Java編程中,equals和==是兩個經常被使用的數學運算符。
==是一個運算符,用于比較兩個對象的引用,看它們是否指向同一個對象。如果兩個對象的引用相同,則==返回true,否則返回false。例如:
String str1 = "Hello"; String str2 = "Hello"; if (str1 == str2) { System.out.println("str1和str2的引用相同"); } else { System.out.println("str1和str2的引用不同"); }
由于字符串是不可變的,因此Java會使用字符串常量池來優化代碼,以便在內存中重用相同的字符串對象。因此,上面的代碼將輸出“str1和str2的引用相同”,因為它們引用的都是同一個字符串對象。
然而,equals方法是用于比較兩個對象的內容是否相同,而不是它們的引用。因此,如果兩個對象的內容相同,則equals方法返回true,否則返回false。例如:
String str1 = "Hello"; String str2 = "Hello"; if (str1.equals(str2)) { System.out.println("str1和str2的內容相同"); } else { System.out.println("str1和str2的內容不同"); }
由于字符串常量池中已經存在一個“Hello”字符串對象,因此上面的代碼將輸出“str1和str2的內容相同”,如果使用new String("Hello")創建字符串對象,則輸出“str1和str2的內容不同”,因為這會創建一個新的字符串對象。