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

Java String.compareTo() 返回 0 表示字符串相等,非錯誤

     編輯:程式設計綜合問答

調用 list5[num].compareTo(\"論文答辯\") 返回 0,**完全正常**,表示兩字符串**內容相等**。這是 `Comparable` 接口約定:

  • 返回 0:this.equals(that) 為 true,字符串逐字符相同。
  • 返回 正數:`this` 按字典序大於參數字符串。
  • 返回 負數:`this` 按字典序小於參數字符串。

代碼驗證

String s1 = "論文答辯";
String s2 = "論文答辯";
System.out.println(s1.compareTo(s2));  // 輸出 0
System.out.println(s1.equals(s2));     // 輸出 true

常見誤解

  • 以為返回 0 代表「錯誤」或「無差異標識」—— 實際上 0 正是「完全相等」的標準語義。
  • 若需判斷相等,**首選 `equals()`**,語義更清晰;`compareTo()` 主要用於**排序**。

最佳實踐

// 判斷相等
if (list5[num].equals("論文答辯")) { ... }

// 排序場景
list.sort(String::compareTo);  // 或 compareToIgnoreCase

補充:null 安全

  • `"abc".compareTo(null)` → 拋 NullPointerException。
  • `Objects.equals(str1, str2)` / `str1 != null && str1.equals(str2)` 可避免 NPE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved