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