方法 | 描述 |
---|---|
int compareTo(String anotherString) | 逐字元比較原字串與 anotherString ,若無不同,也就是兩個字串中的每個字元都相同就回傳 0 ,若有不同則回傳長度差或第一個不同字元的 Unicode 差值 |
內文依據花生狼網友的指正於 2011, 8, 26 進行修改,重寫之範例說明,請參考關於 compareTo() 的補充範例說明。
舉例如下
class ComparetoSDemo { public static void main(String[] args) { String a = "Imagination is more important than knowledge."; String b = "He who has hope has everything."; String c = "台上一分鐘,台下十年功。"; System.out.println(a.compareTo(b)); System.out.println(b.compareTo(a)); System.out.println(c.compareTo(c)); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ComparetoSDemo.java 功能:示範物件導向的基本觀念 作者:張凱慶 時間:西元 2010 年 10 月 */
編譯後執行,結果如下
中英文術語對照 | |
---|---|
類別 | class |
方法 | method |
字串 | string |
參考資料
http://download.oracle.com/javase/tutorial/java/data/strings.html
http://download.oracle.com/javase/tutorial/java/data/converting.html
http://download.oracle.com/javase/tutorial/java/data/manipstrings.html
http://download.oracle.com/javase/tutorial/java/data/comparestrings.html
http://download.oracle.com/javase/7/docs/api/java/lang/String.html
http://download.oracle.com/javase/tutorial/java/data/strings.html
http://download.oracle.com/javase/tutorial/java/data/converting.html
http://download.oracle.com/javase/tutorial/java/data/manipstrings.html
http://download.oracle.com/javase/tutorial/java/data/comparestrings.html
http://download.oracle.com/javase/7/docs/api/java/lang/String.html
5 則留言:
你寫錯了~!!!
請指教
很感謝您能分享您的知識,
但或許是因為被c語言的strcmp()所影響,
才會有
『比較原字串與 anotherString ,大於回傳 1 ,等於回傳 0 ,小於回傳 -1』
的錯誤解釋,
http://download.oracle.com/javase/tutorial/java/data/comparestrings.html
理的解釋是比較籠統,但也是沒有提到1跟-1,
有關java api,建議到java api會比較清楚
http://download.oracle.com/javase/1,5.0/docs/api/
http://download.oracle.com/javase/6/docs/api/
String的compareTo()會有兩種回傳值,
首先是依序計算this和anotherString每個字元的差,
his.charAt(k)-anotherString.charAt(k)
如果計算出來的值不是0,就會回傳該值。
您的舉例就是拿'I'跟'H'相比,當然只有1跟-1,
這隨便多比較幾個例子就知道不是您說的那樣了,
簡單一點在您的舉例裡多印出a.compareTo(c)或b.compareTo(c)也可以。
如果k的值已經指到this和anotherString較短字串的最後一個字元,
都沒發現不同字元時,像是"ab".compareTo("abcde"),
String的compareTo()會改回傳兩字串的長度差
this.length()-anotherString.length()
所以
"ab".compareTo("abcde") 回傳-3,
"abcdefg".compareTo("abcde") 回傳2。
另外您針對Number的compareTo()解釋一樣有誤
http://pydoing.blogspot.com/2010/12/java-compareto.html
舉的例子也是很碰巧都是差1(應該不是刻意的吧),
您可以多拿一點數字來比較就知道絕對不是
『本身大於參數, compareTo() 會回傳整數 1 ,反之本身小於參數, compareTo() 會回傳整數 -1 。』
希望您能修改一下您的文章,
避免不清楚的網友被誤導了,謝謝!
內文已修改,感謝指正 ^^
指正不敢當,只是剛好有研究過這個method而已~~
我是很常在貴站吸取知識的 :D
張貼留言