当前位置:科普知识站>IT科技>

compareto|java

IT科技 阅读(2.27W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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。

compareto java

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 StringSystem.out.println((num1+"").compareTo(num2+""));//-1System.out.println(new Integer(num1).toString(). compareTo(new Integer(num2).toString()));//-1System.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)方法注意要非空判断,这里实例就不判断了。