Java String类的compareTo()方法-简单理解与使用

  简单来说,String类的compareTo()方法是用来比较两个字符串的字典顺序。
  用字符串1跟字符串2作比较,如果字符串1的字典顺序在字符串2前面,则返回一个负数。若在后面,则返回一个正数。若两个字符串的字典顺序相同,则返回0。
  这里的字典顺序指的是ASCII码表中的字符顺序。ASCII表中每个字符都有对应的下标,从0开始升序排列,共128个字符。

比较字典顺序的规则


  • 字符串1的第一个字符跟字符串2的第一个字符不相等,则两个字符串都按照第一个字符的ASCII码顺序进行比较,其他字符都不用看,并返回一个整型。

示例
public class MyTest {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "IloveU";
        System.out.println(str1.compareTo(str2));
    }
}

  以上代码运行结果为24
  str1的第一个字符 a 在ASCII码表中十进制的下标为 97 ,str2的第一个字符 I 是 73 ,97比73多24,所以返回 24 。



  • 字符串1的第一个字符如果跟字符串2的第一个字符相等,那么就以两个字符串的第二个字符开始比较,如果还是相等就以第三个字符开始比较……以此类推,直到两个字符串中出现不一样的字符时再比较双方的字典顺序。

示例

public class MyTest {
    public static void main(String[] args) {
        String str1 = "aIloveU520";
        String str2 = "abc";
        System.out.println(str1.compareTo(str2));
    }
}

  以上代码运行结果为 -25
  str1的第二个字符 I 的在ASCII码表中的下标为 73 , str2的第二个字符 b 为 98 ,73比98少25,所以返回-25。



  • 如果两个字符串的前几位字符都相同,但字符串2比字符串1多几位字符,那么就以字符串的长度进行比较。

示例

public class MyTest {
    public static void main(String[] args) {
        String str1 = "ljj";
        String str2 = "ljjLovexql";
        System.out.println(str1.compareTo(str2));
    }
}

  以上代码运行结果为 -7
  str1比str2少7个字符,所以返回 -7

  • 27
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
很好的问题!让我来解答。 首先,让我们来了解一下 `Comparable` 接口。这个接口是 Java 中的一个接口,它只有一个方法 `compareTo()`。这个方法的作用是定义的自然排序顺序。 如果我们要对一个对象集合进行排序,只需要让这个实现 `Comparable` 接口,并且重写 `compareTo()` 方法。这个方法返回一个整型值,表示该对象与另一个对象的大小关系。如果该对象小于另一个对象,则返回负整数;如果两个对象相等,则返回零;如果该对象大于另一个对象,则返回正整数。 下面是一个简单的例子,展示如何使用 `Comparable` 接口进行排序。 ```java public class Student implements Comparable<Student> { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } // 重写 compareTo 方法 @Override public int compareTo(Student o) { // 按照年龄从小到大排序 return this.age - o.getAge(); } } ``` 在这个例子中,我们定义了一个 `Student` ,并且让它实现了 `Comparable` 接口。我们重写了 `compareTo()` 方法,按照年龄从小到大排序。 现在,我们可以使用 `Collections.sort()` 方法对 `Student` 对象进行排序了: ```java List<Student> students = new ArrayList<>(); students.add(new Student("Tom", 20)); students.add(new Student("Jerry", 18)); students.add(new Student("Alice", 22)); Collections.sort(students); for (Student student : students) { System.out.println(student.getName() + " " + student.getAge()); } ``` 输出结果为: ``` Jerry 18 Tom 20 Alice 22 ``` 可以看到,我们成功地按照年龄从小到大对 `Student` 对象进行了排序。 希望这个例子能够帮助你理解如何使用 `Comparable` 接口进行排序。如果你还有其他问题,请随时提出!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值