都在在java.lang 包下
java.lang.String中comparaTo()
- 按字典顺序比较两个字符串。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。
- 如果没有字符不同的索引位置,返回这两个字符串长度的差;
- 如果这两个字符串不同,且某个索引处的字符不同,同时长度不同(例如:asdd和abdche,索引1和3处不同);
public class ComparaTo { public static void main(String[] args){ String x1="a"; String x2="c"; //a的ASCII码值比c小2,所以输出-2 System.out.println(x1.compareTo(x2)); String x3="abc"; String x4="ab"; //abc的长度比ab的长度大1,所以输出1 System.out.println(x3.compareTo(x4)); String x5="cat"; String x6="china"; //cat和china在下标索引为1的地方出现了不同,a的ASCII码值比h小7,所以输出-7 System.out.println(x5.compareTo(x6)); String x7="CHINA"; String x8="china"; //忽略大小写区别,所以输出为0 System.out.println(x7.compareToIgnoreCase(x8)); } }
java.lang.comparable接口中comparaTo()
Comparable 可以让实现它的类的对象进行比较,具体的比较规则是按照 compareTo 方法中的规则进行。这种顺序称为 自然顺序。
compareTo 方法的返回值有三种情况:
- e1.compareTo(e2) > 0 即 e1 > e2
- e1.compareTo(e2) = 0 即 e1 = e2
- e1.compareTo(e2) < 0 即 e1 < e2
-
注意:
1.由于 null 不是一个类,也不是一个对象,因此在重写 compareTo 方法时应该注意 e.compareTo(null) 的情况,即使 e.equals(null) 返回 false,compareTo 方法也应该主动抛出一个空指针异常 NullPointerException。
2.Comparable 实现类重写 compareTo 方法时一般要求 e1.compareTo(e2) == 0 的结果要和 e1.equals(e2) 一致。这样将来使用 SortedSet 等根据类的自然排序进行排序的集合容器时可以保证保存的数据的顺序和想象中一致。