String中的compareTo与compareToIgnoreCase()方法解析
来源:互联网 发布:淘宝激光脱毛器好用吗 编辑:程序博客网 时间:2024/06/07 16:33
这个方法的意思是比较两个字符串,不区分大小写。
我们来看一下这个方法是怎样实现的?
public int compareToIgnoreCase(String str) { return CASE_INSENSITIVE_ORDER.compare(this, str); }
它通过一个引用调用一个方法,并将这个要比较的字符串和当前类的String对象传过来。
让我们来看以下这个引用是哪个类的实例?
public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
我们发现CaseInsensitiveComparator这个类,是String类中的静态内部类。它实现了comparetor接口,实现了它的compare()方法。
我们来看一下这个compare()方法。
public int compare(String s1, String s2) { int n1 = s1.length(); int n2 = s2.length(); int min = Math.min(n1, n2); for (int i = 0; i < min; i++) { char c1 = s1.charAt(i); char c2 = s2.charAt(i); if (c1 != c2) { c1 = Character.toUpperCase(c1); c2 = Character.toUpperCase(c2); if (c1 != c2) { c1 = Character.toLowerCase(c1); c2 = Character.toLowerCase(c2); if (c1 != c2) { // No overflow because of numeric promotion return c1 - c2; } } } } return n1 - n2; }
显然,比较的方法是这样的,找到两个字符串的长度最小的那个,记为min,作为for循环的次数,比较他们两个的前min的char,如果不相同就全都转换成大写,如何还不相同,就全部都转换成小写,如果还不相同的话,就直接返回。
我们来继续看conpareTo方法。
public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } return len1 - len2; }
比较两个字符串的长度,如果二者相等,返回0,如果不相等,如下例子,返回str2-str1。
下面是例子。
String str1 = "Stringtest";System.out.println("compareTo方法"+str1.compareTo("test"));
运行结果
compareTo方法-1
0 0
- String中的compareTo与compareToIgnoreCase()方法解析
- String类的compareTo()和compareToIgnoreCase()
- String的方法compareToIgnoreCase
- String类中的compareTo方法
- java的String中的compareTo方法源码
- String类中的compareTo方法总结
- String类中的compareTo方法总结
- String类下compareTo()与compare()方法
- 白菜之compareTo()和compareToIgnoreCase()
- java String中的compareTo
- String的CompareTo方法
- String 的 compareTo 方法
- String的compareTo方法
- Java String.compareTo()方法
- String的compareTo()方法
- String的compareTo方法
- Java String.compareTo()方法
- String的compareTo方法
- 【九度OJ】题目1026:又一版 A+B 解题报告
- configure: error: C++ preprocessor "/lib/cpp" fails sanity check
- 蓝桥杯 ADV-80 算法提高 选最大数
- S188 Online Casino Social Media Bonus Add Wechat
- 泛型[7]一个复杂泛型示例研究
- String中的compareTo与compareToIgnoreCase()方法解析
- 排序算法(4)——快速排序
- 构造函数
- 蓝桥杯 ADV-81 算法提高 数的运算
- Android集成百度定位,超详细,拒绝坑,附demo!!!
- GRPC入门教程
- JS实现全选、不选、反选
- 按列合并多个txt文件为csv文件的脚本
- 历届试题 小朋友排队