首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 字串比較陷阱:為什麼不能使用 == 比較字串內容?

     編輯:程式設計綜合問答

問題代碼

String a = format.format(date); // 例如 "星期二"
String Mon[] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
for (int i = 0; i < 7; i++) {
    if (a == Mon[i]) {  // 問題在這裡
        System.out.println(i + 1);
    }
}

錯誤原因

在 Java 中,== 比較的是物件的「記憶體位址(參考)」,而不是字串的「內容」。即使兩個字串內容相同,若它們是不同的物件實例,== 也會回傳 false。

正確做法

if (a.equals(Mon[i])) {
    System.out.println(i + 1);
}

補充說明

  • 使用 String.equals() 比較字串內容。
  • 若只想比較不區分大小寫,可使用 equalsIgnoreCase()。
  • 字串常數池可能導致部分情況下 == 看似正常,但這不是可靠的做法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved