📜  Java| ==、equals()、compareTo()、equalsIgnoreCase() 和 compare()(1)

📅  最后修改于: 2023-12-03 14:42:42.514000             🧑  作者: Mango

Java的字符串比较

比较方法

Java中字符串的比较可以使用以下几种方法:

  1. == 操作符
  2. equals() 方法
  3. compareTo() 方法
  4. equalsIgnoreCase() 方法
  5. compare() 方法

我们将逐一介绍这些方法。

== 操作符

== 操作符可以用来比较两个字符串对象是否相等。

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

在这个例子中,我们定义了三个字符串对象。str1 和 str2 都是使用字面量创建的,并且它们的值相同。str3 则是使用 new 关键字创建的,它的值也是 "hello"。但是,由于 str3 是创建了一个新的字符串对象,它与 str1 和 str2 不相等,所以 str1 == str3 返回 false。

equals() 方法

equals() 方法可以用来比较两个字符串对象的内容是否相等。

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

在这个例子中,我们使用 equals() 方法比较了 str1 和 str2 是否相等,结果返回了 true。然后,我们比较了 str1 和 str3 是否相等,结果同样为 true。这是因为 equals() 方法比较的是字符串对象的内容,而不是对象的引用。

compareTo() 方法

compareTo() 方法可以用来比较两个字符串对象的大小。

String str1 = "abc";
String str2 = "abd";
String str3 = "abc";

System.out.println(str1.compareTo(str2)); // -1
System.out.println(str1.compareTo(str3)); // 0
System.out.println(str2.compareTo(str1)); // 1

在这个例子中,我们使用 compareTo() 方法比较了 str1 和 str2 的大小。由于 str1 的第三个字符是 'c',str2 的第三个字符是 'd',所以 str1 小于 str2,结果返回了 -1。然后,我们比较了 str1 和 str3 的大小,它们的内容相同,结果返回了 0。最后,我们比较了 str2 和 str1 的大小,因为 str2 大于 str1,所以结果返回了 1。

equalsIgnoreCase() 方法

equalsIgnoreCase() 方法可以用来比较两个字符串对象的内容是否相等,并且忽略大小写。

String str1 = "Hello";
String str2 = "hello";

System.out.println(str1.equalsIgnoreCase(str2)); // true

在这个例子中,我们使用 equalsIgnoreCase() 方法比较了 str1 和 str2 是否相等,由于它们的内容相同并且忽略大小写,所以结果返回了 true。

compare() 方法

compare() 方法是一个静态方法,它可以用来比较两个字符串的大小,并且可以指定大小写敏感或者不敏感。

String str1 = "abc";
String str2 = "abd";
String str3 = "abc";

System.out.println(String.compare(str1, str2)); // -1
System.out.println(String.compare(str1, str3)); // 0
System.out.println(String.compare(str2, str1)); // 1
System.out.println(String.compare(str1, str2, true)); // -1
System.out.println(String.compare(str1, str2, false)); // 1

在这个例子中,我们使用 compare() 方法比较了 str1 和 str2 的大小。由于 str1 的第三个字符是 'c',str2 的第三个字符是 'd',所以 str1 小于 str2,结果返回了 -1。然后,我们比较了 str1 和 str3 的大小,它们的内容相同,结果返回了 0。最后,我们比较了 str2 和 str1 的大小,因为 str2 大于 str1,所以结果返回了 1。然后,我们使用 compare() 方法比较了 str1 和 str2 是否相等,由于它们的内容相同,所以结果返回了 -1。最后,我们再次使用 compare() 方法比较了 str1 和 str2 是否相等,但是这一次我们将大小写不敏感,所以结果返回了 1。

总结

Java提供了很多种方法来比较字符串对象,我们需要根据不同的需求选择不同的方法。当比较字符串对象是否相等时,我们应该使用 equals() 方法,而不是 == 操作符;当比较字符串的内容大小时,我们应该使用 compareTo() 方法。如果需要比较字符串时忽略大小写,我们可以使用 equalsIgnoreCase() 方法或者 compare() 方法。