compareto java是什么,讓我們一起了解下?
compareto java是從數字上比較兩個Double對象。在應用到基本double值時,通過此方法進行的比較與通過Java語言的數值比較運算符(<、<=、== 和 >= >)進行的比較。
一. 在java中compareto的詳細方法介紹如下:
1、返回參與比較的前后兩個字符串的asc碼的差值,如果兩個字符串首字母不同,則該方法返回首字母的asc碼的差值。
String?a1?=?"a"; String?a2=?"c"; System.out.println(a1.compareTo(a2));//結果為-2
2、即參與比較的兩個字符串如果首字符相同,則比較下一個字符,直到有不同的為止,返回該不同的字符的asc碼差值。
String?a1?=?"aa"; String?a2=?"ad"; System.out.println(a1.compareTo(a2));//結果為-3
3、如果兩個字符串不一樣長,可以參與比較的字符又完全一樣,則返回兩個字符串的長度差值。
String?a1?=?"aa"; String?a2=?"aa12345678"; System.out.println(a1.compareTo(a2));//結果為-8
4、返回為正數表示a1>a2, 返回為負數表示a1。
5、數字類型不能用compareTo,nt跟int的比較不能用compareTo方法,直接用大于(>)小于。
int?num1?=?4;int?num2?=?5; num1.compareTo(num2);//Cannot?invoke?compareTo(int)?on?the?primitive?type?int
你可以先把你的int型變量轉換成String再進行比較。
int?num1?=?4;int?num2?=?5;//parse?int?to?String System.out.println((num1+"").compareTo(num2+""));//-1 System.out.println(new?Integer(num1).toString().?compareTo(new?Integer(num2).toString()));//-1 System.out.println(String.valueOf(num1).compareTo(String.valueOf(num2)));//-1
6、compareToIgnoreCase忽略大小寫。
不考慮大小寫,按字典順序比較兩個字符串。此方法返回一個整數,它的正負號是調用 compareTo 的正負號,調用時使用了字符串的規范化版本,其大小寫差異已通過對每個字符調用 Character.toLowerCase(Character.toUpperCase(character)) 得以消除。
注意,此方法不 考慮語言環境,因此可能在某些特定的語言環境中產生不理想的排序。java.text 包提供 Collators 來完成語言環境敏感的排序。
7、int型可以直接比較,所以沒有用到compareTo比較,如果聲明的是Date、String、Integer、或者其他的,可以直接使用compareTo比較。
Integer?n1?=?5; Integer?n2=?6; System.out.println(n1.compareTo(n2));//-1
二. Comparable接口中的compareTo,compareTo方法內必須做非空判斷(規范問題),當然int類型就不用了。
注意事項:
1、模型必須實現Comparable接口。
2、Collection.sort(list)會自動調用compareTo,如果沒有這句,list是不會排序的,也不會調用compareTo方法。
3、如果是數組則用Arrays.sort(a)方法注意要非空判斷,這里實例就不判斷了。
以上就是小編今天的分享了,希望可以幫助到大家。