就是compareTo,會想介紹這個方法是因為我一開始只知道
這個方法用於比較字串,正確的話就會回傳0,但我不清楚
如果錯誤的話,回傳的值表示什麼意思。
查了一下Java SE 7的API
public int compareTo(String anotherString)
如果字串一樣的話,毫無疑問會回傳0。
但如果不一樣呢,
compareTo會逐一比較兩個字串,
當出現了第一個不一樣的 character 時,
該character位於字串的位置 k,k 也就是 index
則回傳以下結果:
this.charAt(k) - anotherString.charAt(k)
或是比較完比較短的字串仍沒有發現相異的字元時,
則會回傳以下結果:
this.length( ) - anotherString.length( )
舉例而言:
String a = "abc"; String b = "abcde"; String c = "abcF"; System.out.println(a.compareTo(b)); System.out.println(b.compareTo(a)); System.out.println(c.compareTo(a)); System.out.println(c.compareTo(b)); System.out.println(c.charAt(3)-b.charAt(3));執行結果:
首先 a.compareTo(b) 會回傳 a.length( ) - b.length( ) 所以 3 - 5 = -2
同理可推 b.compareTo(a) 則回傳 b.length( ) - a.length( ) 回傳 2
c.compareTo(a) 則是 c.length( ) - a.length( ) 所以 4 - 3 = 1
c.compareTo(b) 因為第一個相異的字元的index為3
所以會回傳 c.charAt(3) - b.charAt(3) = -30
至於-30怎麼來的,
上網查了一下應該是轉成Unicode之後的計算結果。
沒有留言:
張貼留言