Java String类字符串比较方法及示例

x33g5p2x  于2022-10-15 转载在 其他  
字(6.2k)|赞(0)|评价(0)|浏览(813)

字符串比较方法概述

String类包括许多用于比较字符串或字符串中的子字符串的方法。

  • equals(Object anObject)
  • equalsIgnoreCase(String str)
  • regionMatches( )
  • startsWith( ) methods
  • endsWith( ) methods
  • equals( ) Versus ==
  • compareTo( )
  • compareToIgnoreCase(String str)

字符串比较方法及示例

equals()方法

要比较两个字符串是否相等,请使用equals( )。它的一般形式为:

  1. boolean equals(Object str)

这里,str是与调用String对象进行比较的String对象。如果字符串包含相同顺序的相同字符,则返回true,否则返回false。比较区分大小写。

**示例1:**此示例演示equals()方法的用法。

  1. public class EqualsExample {
  2. public static void main(String[] args) {
  3. String str = "javaguides";
  4. String str1 = "javaguides";
  5. String str3 = "javatutorial";
  6. boolean equal = str.equals(str1);
  7. System.out.println(" Is both string are equal :: " + equal);
  8. }
  9. }

输出:

  1. Is both string are equal :: true

equalsIgnoreCase(String str)方法

要执行忽略大小写差异的比较,请调用equalsIgnoreCase()。当它比较两个字符串时,它认为A-Z与A-Z相同。它有以下一般形式:

  1. boolean equalsIgnoreCase(String str)

这里,str是与调用String对象进行比较的String对象。如果字符串包含相同顺序的相同字符,它也会返回true,否则返回false

**示例:**此示例演示equalsIgnoreCase()方法的用法。

  1. public class EqualsIgnoreCaseExample {
  2. public static void main(String[] args) {
  3. String str = "javaguides";
  4. boolean equal = str.equalsIgnoreCase("JAVAguides");
  5. System.out.println("Strings are equal :: " + equal);
  6. }
  7. }

输出:

  1. Strings are equal :: true

以下是演示equals( ) and equalsIgnoreCase( )的示例:

  1. // Demonstrate equals() and equalsIgnoreCase().
  2. class equalsDemo {
  3. public static void main(String args[]) {
  4. String s1 = "Hello";
  5. String s2 = "Hello";
  6. String s3 = "Good-bye";
  7. String s4 = "HELLO";
  8. System.out.println(s1 + " equals " + s2 + " -> " + s1.equals(s2));
  9. System.out.println(s1 + " equals " + s3 + " -> " + s1.equals(s3));
  10. System.out.println(s1 + " equals " + s4 + " -> " + s1.equals(s4));
  11. System.out.println(s1 + " equalsIgnoreCase " + s4 + " -> " + s1.equalsIgnoreCase(s4));
  12. }
  13. }

程序的输出如下所示:

  1. Hello equals Hello -> true
  2. Hello equals Good-bye -> false
  3. Hello equals HELLO -> false
  4. Hello equalsIgnoreCase HELLO -> true

regionMatches()方法

regionMatches()方法有两种类型regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)-测试两个字符串区域是否相等。

regionMatches(int toffset,String other,int ooffset,int len)-测试两个字符串区域是否相等。
**示例:**测试两个字符串区域是否相等的示例。

  1. public class RegionMatchesExample {
  2. public static void main(String[] args) {
  3. String str = "javaguides";
  4. String subStr = "guides";
  5. boolean b = str.regionMatches(0, subStr, str.length(), str.length());
  6. boolean b1 = str.regionMatches(true, 0, str, 0, str.length());
  7. System.out.println(b);
  8. System.out.println(b1);
  9. }
  10. }

输出:

  1. false
  2. true

startsWith()方法

startsWith()方法有两种形式startsWith(String prefix)-测试此字符串是否以指定的前缀开头。

boolean startsWith(String prefix,int toffset)-测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

startsWith( )方法确定给定字符串是否以指定字符串开头。

**示例:**这是一个完整的示例,演示startsWith()方法的用法。

  1. public class StartsWithExample {
  2. public static void main(String[] args) {
  3. String str = "javaguides";
  4. boolean startWith = str.startsWith("ja");
  5. System.out.println("startWith :: " +startWith);
  6. // Remember index starts from 0
  7. boolean startWithOffset = str.startsWith("guides", 4);
  8. System.out.println("startWithOffset :: " + startWithOffset);
  9. }
  10. }

输出:

  1. startWith :: true
  2. startWithOffset :: true

endsWith()方法

此方法测试此字符串是否以指定的后缀结尾。如果参数所表示的字符序列是此对象所表示字符序列的后缀,则返回true;否则为false。
例子:

  1. public class EndsWithExample {
  2. public static void main(String[] args) {
  3. String str = "javaguides";
  4. String subStr = "guides";
  5. boolean endsWith = str.endsWith(subStr);
  6. System.out.println(str + " endsWith " + subStr +" :: " + endsWith);
  7. }
  8. }

输出:

  1. javaguides endsWith guides :: true

重要的是要了解equals()方法和==运算符执行两种不同的操作。

  • equals( )方法比较String对象内的字符。
  • ==运算符比较两个对象引用,以查看它们是否引用同一示例。

以下程序显示了两个不同的String对象如何可以包含相同的字符,但对这些对象的引用不会进行相等的比较:

  1. // equals() vs ==
  2. class EqualsNotEqualTo {
  3. public static void main(String args[]) {
  4. String s1 = "Hello";
  5. String s2 = new String(s1);
  6. System.out.println(s1 + " equals " + s2 + " -> " + s1.equals(s2));
  7. System.out.println(s1 + " == " + s2 + " -> " + (s1 == s2));
  8. }
  9. }

变量s1表示“Hello”创建的String示例。s2引用的对象是用s1作为初始值设定项创建的。因此,两个String对象的内容是相同的,但它们是不同的对象。这意味着s1和s2不引用相同的对象,因此不是==,如前面示例的输出所示:

  1. Hello equals Hello -> true
  2. Hello == Hello -> false

compareTo()方法

通常,仅仅知道两个字符串是否相同是不够的。对于排序应用程序,您需要知道哪个小于、等于或大于下一个。如果一个字符串按字典顺序排在另一个之前,那么它就小于另一个。如果一个字符串在字典顺序中位于另一个字符串之后,则该字符串大于另一个。
方法compareTo( )可用于此目的。它由String实现的Comparable 接口指定。它有以下一般形式:

  1. int compareTo(String str)

这里,str是正在与调用的String进行比较的String。比较结果作为值返回,表示:

  • 小于零调用字符串小于str。
  • 大于零调用字符串大于str。
  • 零两个字符串相等。
    **示例:**这是一个对字符串数组进行排序的示例程序。程序使用*compareTo()*确定冒泡排序的排序顺序:
  1. // A bubble sort for Strings.
  2. public class CompareToSecondExample {
  3. static String arr[] = { "Now", "is", "the", "time",
  4. "for", "all", "good", "men", "to", "come", "to", "the", "aid",
  5. "of", "their", "country" };
  6. public static void main(String args[]) {
  7. for (int j = 0; j < arr.length; j++) {
  8. for (int i = j + 1; i < arr.length; i++) {
  9. if (arr[i].compareTo(arr[j]) < 0) {
  10. String t = arr[j];
  11. arr[j] = arr[i];
  12. arr[i] = t;
  13. }
  14. }
  15. System.out.println(arr[j]);
  16. }
  17. }
  18. }

这个程序的输出是单词列表:

  1. Now
  2. aid
  3. all
  4. come
  5. country
  6. for
  7. good
  8. is
  9. men
  10. of
  11. the
  12. the
  13. their
  14. time
  15. to
  16. to

从本例的输出中可以看到,compareTo( ) 考虑了大小写字母。单词“Now”出现在所有其他单词之前,因为它以大写字母开头,这意味着它在ASCII字符集中的值较低。

**示例:**compareTo方法返回不同的值示例

  1. String s1 = "Hello World";
  2. String s2 = "Hello World";
  3. String s3 = "Java";
  4. String s4 = "Guides";
  5. System.out.println(s1.compareTo(s2));// 0 because both are equal
  6. System.out.println(s1.compareTo(s3));// -2 because "H" is 2 times lower than "J"
  7. System.out.println(s1.compareTo(s4));// 1 because "G" is 1 times greater than "H"

输出:

  1. 0
  2. -2
  3. 1

**示例:**使用compareTo()方法将字符串与黑色或空字符串进行比较。请注意,与空字符串相比,返回字符串的长度。

  1. String s1 = "hello";
  2. String s2 = "";
  3. String s3 = "me";
  4. // compare with empty string, returns length of the string
  5. System.out.println(s1.compareTo(s2));
  6. // If first string is empty, result would be negative
  7. System.out.println(s2.compareTo(s3));

输出:

  1. 5
  2. -2

compareToIgnoreCase()方法

按字典顺序比较两个字符串,忽略大小写差异。此方法返回一个整数,其符号是调用compareTo与字符串的规范化版本的符号,其中大小写差异已通过对每个字符调用Character.toLowerCase(Character.toUpperCase(character))消除。
例子:

  1. String s1="Hello World";
  2. String s2="hello world";
  3. String s3="Java";
  4. String s4="java";
  5. System.out.println(s1.compareToIgnoreCase(s2));
  6. System.out.println(s3.compareToIgnoreCase(s4));

输出:

  1. 0
  2. 0

此方法返回一个负整数、零或正整数,因为指定的String大于、等于或小于此String,忽略大小写考虑。

GitHub存储库

参考

相关文章