String类下compareTo()方法

转载:http://www.blogjava.net/onejavaer
String类下compareTo()方法
比较两个字符串,依次对比两个字符串中字符的ASC码,两个字符的ASC码相等则继续比较下两个字符直至比较出不同的两个字符跳出方法.方法返回值类型为整型.
例如
String a = "2345";
String b = "2322";
则a.compareTo(b)返回2
b.compareTo(a)返回-2
如果两个字符串相等,则返回值为0

自己的理解还有是偏差的,下面是经典的解释


compareTo
public int compareTo(String anotherString)
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:

this.charAt(k)-anotherString.charAt(k)

如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:
this.length()-anotherString.length()


指定者:
接口 Comparable<String> 中的 compareTo
参数:
anotherString - 要比较的 String。
返回:
如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

--------------------------------------------------------------------------------

compareToIgnoreCase
public int compareToIgnoreCase(String str)
不考虑大小写,按字典顺序比较两个字符串。此方法返回一个整数,它的正负号是调用 compareTo 的正负号,调用时使用了字符串的规范化版本,其大小写差异已通过对每个字符调用 Character.toLowerCase(Character.toUpperCase(character)) 得以消除。
注意,此方法不 考虑语言环境,因此可能在某些特定的语言环境中产生不理想的排序。java.text 包提供 Collators 来完成语言环境敏感的排序。


参数:
str - 要比较的 String。
返回:
一个负整数、零或正整数,视指定的 String 大于、等于还是小于该 String 而定,不考虑大小写。
### 回答1: StringcompareTo方法是用来比较两个字符串的大小关系的。它返回一个整数值,表示两个字符串的大小关系。 如果两个字符串相等,返回;如果当前字符串小于另一个字符串,返回一个负整数;如果当前字符串大于另一个字符串,返回一个正整数。 比较的规则是按照字典序进行比较,即从左到右依次比较每个字符的Unicode值。如果当前字符的Unicode值小于另一个字符串对应位置的字符的Unicode值,则当前字符串小于另一个字符串;如果当前字符的Unicode值大于另一个字符串对应位置的字符的Unicode值,则当前字符串大于另一个字符串;如果两个字符的Unicode值相等,则继续比较下一个字符,直到比较完所有字符或者出现不相等的字符为止。 ### 回答2: string是Java中用来处理字符串的。在string中有一个compareto方法,用来比较两个字符串的大小关系。 compareto方法的返回值是一个整型值,它表示了两个字符串的大小关系。如果两个字符串相等,返回值为0;如果第一个字符串比第二个字符串小,则返回值是负数;如果第一个字符串比第二个字符串大,则返回值是正数。具体说来,可以根据ASCll码对字符串中的每个字符进行比较。如果字符串中的某个字符的ASCll码不同,则按照它们的ASCll码大小来比较。 当使用compareto方法比较两个字符串的时候,需要注意以下几点: 1.方法是大小写敏感的,所以大写字母和小写字母视为不同的字符。 2. 字符串的比较顺序是从左到右,一旦在某个位置上发现两个字符不同,就停止比较。因此,在字符串中字符的位置非常重要。 3.方法只比较字符串的内容,不考虑字符串的长度和其他因素。 比如,可以使用compareto方法来比较两个字符串的大小关系: String str1 = "abcd"; String str2 = "abdf"; int result = str1.compareTo(str2); if(result < 0) System.out.println("str1小于str2"); else if(result > 0) System.out.println("str1大于str2"); else System.out.println("str1等于str2"); 在这个例子中,str1和str2都是字符串,使用compareto方法比较它们的大小关系。因为第四个字符不同,所以按照ASCII码比较,'c'的码值比'd'小1,从而str1比str2小1。因此,该示例程序输出“str1小于str2”。 ### 回答3: string是Java中一个非常常用的,它提供了很多操作字符串的方法,其中包括了compareTo方法compareTo方法是用来比较当前字符串对象与指定字符串对象的字典顺序大小的。字典顺序就是按照字母表依次比较每一个字符的大小。如果字符串相等,返回值为0;如果当前字符串对象比指定字符串对象小,返回值小于0,否则返回值大于0。 compareTo方法原型如下: public int compareTo(String anotherString) compareTo方法接收一个字符串参数,表示要与当前字符串对象进行比较的字符串。调用该方法的字符串对象称为原字符串,传入的字符串对象称为比较字符串。 具体的比较过程如下: 1. 如果原字符串等于比较字符串,返回0。 2. 如果原字符串小于比较字符串,返回一个小于0的值,注意这里的小于不是最简单的数值大小比较,而是按字符的ASCII码进行比较的。 3. 如果原字符串大于比较字符串,返回一个大于0的值,同样地,这里的大于也是按照字符的ASCII码进行比较的。 一个简单的比较示例: String s1 = "abc"; String s2 = "efg"; String s3 = "abc"; System.out.println(s1.compareTo(s2)); // 输出负整数,因为abc小于efg System.out.println(s1.compareTo(s3)); // 输出0,因为abc等于abc System.out.println(s2.compareTo(s1)); // 输出正整数,因为efg大于abc 除了常规的字典顺序比较之外,compareTo方法还可以用于对数字字符串进行大小比较。比如: String num1 = "123"; String num2 = "234"; System.out.println(num1.compareTo(num2)); // 输出负整数,因为123小于234 需要注意的是,如果字符串中包含非数字字符,会抛出NumberFormatException异常。因此,使用compareTo方法比较数字字符串时,需要确保字符串中只包含数字字符。 总之,compareTo方法是一个非常实用的字符串比较方法,可以用于任何需要比较字符串大小的场合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值