比较Java中的两个字符串–equals(),compareTo()方法
时间:2020-01-09 10:34:53 来源:igfitidea点击:
如果我们必须比较Java中的两个String或者基于这些String的内容比较两个String的一部分,则可以使用以下方法之一进行比较:
- equals()方法或者equalsIgnoreCase()(如果我们不想考虑大小写)。参见示例。
- compareTo()方法或者compareToIgnoreCase()(如果我们不想考虑大小写)。参见示例。
- 为了比较String的一部分,可以使用startsWith()和endsWith()方法。参见示例。
- 要将一个String的区域与另一个String的指定区域进行比较,可以使用regionMatches()方法。参见示例。
使用equals()和equalsIgnoreCase()方法比较字符串
- boolean equals(Object anObject)–将此字符串与指定对象进行比较。如果传递的参数不为null,并且是具有与此String相同的字符序列的String对象,则此方法返回true。
- boolean equalsIgnoreCase(String anotherString)–将此字符串与另一个String进行比较,而忽略大小写考虑。如果两个字符串的长度相同并且两个字符串中的对应字符相等,则认为它们相等(忽略大小写)。
使用equals()方法的Java示例
public class StringComapre { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; String str3 = "hello"; //returns true System.out.println("str1.equals(str2)-" + str1.equals(str2)); //returns false as case is different System.out.println("str1.equals(str3)-" + str1.equals(str3)); } }
输出:
str1.equals(str2)-true str1.equals(str3)-false
使用equalsIgnoreCase()方法的Java示例
public class StringComapre { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; String str3 = "hello"; //returns true System.out.println("str1.equals(str2)-" + str1.equals(str2)); //returns true as case is ignored System.out.println("str1.equalsIgnoreCase(str3)-" + str1.equalsIgnoreCase(str3)); } }
输出:
str1.equals(str2)-true str1.equalsIgnoreCase(str3)-true
使用compareTo()和compareToIgnoreCase()方法比较字符串
- int compareTo(String anotherString)–按字典顺序比较两个字符串。如果此String大于参数,则返回正整数;如果此String小于参数,则返回负整数;如果此字符串等于参数,则返回零。
- int compareToIgnoreCase(String str)–按字典顺序比较两个字符串,忽略大小写差异。如果此String大于参数,则返回正整数;如果此String小于参数,则返回负整数;如果此字符串与参数相等,则返回零(忽略大小写考虑)。
使用compareTo()方法的Java示例
public class StringComapre { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; String str3 = "Halo"; // returns 0 System.out.println("str1.compareTo(str2): " + str1.compareTo(str2)); // returns positive integer System.out.println("str1.compareTo(str3): " + str1.compareTo(str3)); // returns negative integer System.out.println("str3.compareTo(str1): " + str3.compareTo(str1)); } }
输出:
str1.compareTo(str2): 0 str1.compareTo(str3): 4 str3.compareTo(str1): -4
由于str1和str2具有相同的值,因此比较它们时返回0。在将str1与str3比较时,返回正整数(4),因为" hello"之后是" hello"。
使用compareToIgnoreCase()方法的Java示例
public class StringComapre { public static void main(String[] args) { String str1 = "Hello"; String str2 = "hello"; String str3 = "cello"; // returns 0 System.out.println("str1.compareTo(str2): " + str1.compareToIgnoreCase(str2)); // returns positive integer System.out.println("str1.compareTo(str3): " + str1.compareTo(str3)); // returns negative integer System.out.println("str3.compareTo(str1): " + str3.compareTo(str1)); } }
输出:
str1.compareTo(str2): 0 str1.compareTo(str3): -27 str3.compareTo(str1): 27
使用startsWith()和endsWith()方法比较字符串部分
- boolean startsWith(String str)–测试此字符串是否以传递的参数开头。如果子字符串开头匹配,则返回true,否则返回false。
- boolean startsWith(String str,int toffset)–测试此字符串的子字符串是否从指定索引处开始,并以传递的参数开头。如果子字符串开头匹配,则返回true,否则返回false。
- boolean EndsWith(String str)–测试此字符串是否以传递的参数结尾。如果子字符串末尾匹配,则返回true,否则返回false。
Java示例使用startsWith()和endsWith()
public class StringComapre { public static void main(String[] args) { String str = "Compare this String"; // returns true System.out.println("str.startsWith(\"Compare\"): " + str.startsWith("Compare")); // returns false System.out.println("str.startsWith(\"Comparison\"): " + str.startsWith("Comparison")); // returns true- Comparison starts from index 8 System.out.println("str.startsWith(\"this\"): " + str.startsWith("this", 8)); // returns true System.out.println("str.endsWith(\"String\"): " + str.endsWith("String")); // returns false System.out.println("str.endsWith(\"Sting\"): " + str.endsWith("Sting")); } }
输出:
str.startsWith("Compare"): true str.startsWith("Comparison"): false str.startsWith("this"): true str.endsWith("String"): true str.endsWith("Sting"): false
使用regionMatches方法比较字符串部分
- boolean regionMatches(int toffset,String other,int ooffset,int len)–测试两个字符串区域是否相等。将第一个字符串的子字符串与第二个字符串的子字符串进行比较。使用toffset指定第一个字符串的子字符串从其开始的索引。使用ooffset指定第二个字符串的子字符串从其开始的索引。使用len指定要比较的子字符串的长度。
- boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)–如果将ignoreCase传递为true,则在比较字符时忽略大小写。
public class StringComapre { public static void main(String[] args) { String str1 = "Compare this string"; String str2 = "Compare with this String"; // Comparing "this" portion of both Strings- true System.out.println("str1.regionMatches(8, str2, 13, 4): " + str1.regionMatches(8, str2, 13, 4)); // Comparing "String" portion of both Strings- false when case is considered System.out.println("str1.regionMatches(13, str2, 18, 6): " + str1.regionMatches(13, str2, 18, 6)); // Comparing "String" portion of both Strings- true when case is ignored System.out.println("str1.regionMatches(true, 13, str2, 18, 6): " + str1.regionMatches(true, 13, str2, 18, 6)); } }
输出:
str1.regionMatches(8, str2, 13, 4): true str1.regionMatches(13, str2, 18, 6): false str1.regionMatches(true, 13, str2, 18, 6): true