今天,简单讲讲android里String的compareTo函数的使用。
昨天,自己想将字符串进行一个排序,但是排序就必须比较String的大小,这里的String不是数字,而是字符“abd”这样的形式,所以在网上查找了资料,发现compareTo可以解决这个问题。这里记录一下。
compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.
例:
String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
具体的讲一下:
描述
java.lang.String.compareTo() 方法比较两个字符串的字典。比较是基于字符串中的每个字符的Unicode值。此String对象表示的字符序列的参数字符串表示的字符序列进行比较字典.
- 其结果是负的整数,如果此String对象字典前面的参数字符串
- 其结果是一个正整数,如果此String对象字典如下的参数字符串
- 结果是零,如果两个字符串相等,CompareTo返回0时,equal(Object)方法将返回true。
声明
以下是声明java.lang.String.compareTo()方法
public int compareTo(String anotherString)
参数
-
anotherString -- 这是用于进行比较字符串.
返回值
此方法如果这个字符串是等参数字符串那么返回值0,如果这个字符串是按字典顺序小于字符串参数那么返回小于0的值,如果此字符串是按字典顺序大于字符串参数那么一个大于0的值
异常
-
NA
实例
下面的示例演示使用的java.lang.String.compareTo()方法
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (;;) {
String a = sc.next();
String b = sc.next();
int num = a.compareTo(b);
System.out.println(num);
}
}
}
1.当两个比较的字符串是英文且长度不等时,
1)长度短的与长度长的字符一样,则返回的结果是两个长度相减的值
a="hello";
b="hell";
num=1;
或者
a="h";
b="hello";
num=4;
2)长度不一样且前几个字符也不一样,从第一位开始找,当找到不一样的字符时,则返回的值是这两个字符比较的值
a="assdf";
b="bdd";
num=-1;
2.当两个比较的字符串是英文且长度相等时,
1)一个字符
a="a"; //97
b="b"; //98
num=-1;
2)多个字符,第一个字符不同则直接比较第一个字符
a="ah"; //a=97
b="eg"; //e=101
num=-4;
3)多个字符,第一个字符相同则直接比较第二个字符,以此类推
a="ae"; //e=101
b="aa"; //a=97
num=4;
android 使用compareTo比较大小就讲完了。
就这么简单。