簡體   English   中英

為什么 System.out.println(“0:00”.compareTo(“0”)); 結果是3?

[英]Why does System.out.println(“0:00”.compareTo(“0”)); result in 3?

我真的很好奇。

為什么 System.out.println("0:00".compareTo("0")); 結果是3? 我期待 10 作為 ASCII 碼:58,而 0 的 ASCII 碼是 48。

請閱讀String.compareTo的文檔:

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)

如果它們在一個或多個索引位置具有不同的字符,則設 k 為此類索引中的最小; 然后,在 position k 處的字符具有較小值的字符串,由使用 < 運算符確定,按字典順序位於另一個字符串之前。 在這種情況下, compareTo 返回兩個字符串中 position k 處的兩個字符值的差值——即值:

 this.charAt(k)-anotherString.charAt(k)

如果沒有索引 position 不同,則較短的字符串按字典順序排列在較長的字符串之前。 在這種情況下, compareTo 返回字符串長度的差值——即值:

 this.length()-anotherString.length()

第一個字符串的第一個字符等於整個第二個字符串( "0" )。 因此,它們按長度進行比較。 第一個字符串是 4 個字符長,第二個是 1。因此差異是3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM