2012年5月9日 星期三

【JAVA】Class String compareTo

今天簡單介紹一下JAVA裡面的String類別底下的一個方法
就是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之後的計算結果。

沒有留言:

張貼留言