浅谈Java字符串比较的三种方法
在Java中,字符串的比较是很常见的操作。本文将介绍三种Java字符串比较的方法:比较运算符、equals()方法和compareTo()方法,并且将会给出一些示例来让我们更好地理解它们。
比较运算符
比较运算符在Java中可以用来比较两个字符串的字典顺序,具有良好的可读性。判断两个字符串是否相等,我们可以使用“==”,代码如下:
String str1 = "abc";
String str2 = "abc";
if (str1 == str2) {
System.out.println("两个字符串相等");
} else {
System.out.println("两个字符串不相等");
}
上面的代码运行结果为“两个字符串相等”。但是,如果我们对上面的代码进行修改,将str2的赋值方式改为从字符串池中取出,我们会发现运行结果不同。
String str1 = "abc";
String str2 = new String("abc");
if (str1 == str2) {
System.out.println("两个字符串相等");
} else {
System.out.println("两个字符串不相等");
}
上面的代码运行结果为“两个字符串不相等”。原因是“==”只比较两个字符串的引用是否相等。
equals()方法
equals()方法是Java String类提供的一种方法,也是比较字符串的一种常用方式。该方法比较两个字符串的内容是否相等。代码如下:
String str1 = "abc";
String str2 = new String("abc");
if (str1.equals(str2)) {
System.out.println("两个字符串相等");
} else {
System.out.println("两个字符串不相等");
}
上面的代码运行结果为“两个字符串相等”。原因是equals()方法比较两个字符串的内容是否相等。
compareTo()方法
compareTo()方法是另一种比较字符串的方法,该方法是基于Unicode值的大小进行比较。compareTo()方法返回值为0,则两个字符串相等。如果返回值为正数,则说明第一个字符串的Unicode值大于第二个字符串;如果返回值为负数,则说明第一个字符串的Unicode值小于第二个字符串。代码如下:
String str1 = "abc";
String str2 = "cde";
int result = str1.compareTo(str2);
if (result == 0) {
System.out.println("两个字符串相等");
} else if (result > 0) {
System.out.println("字符串str1大于字符串str2");
} else {
System.out.println("字符串str1小于字符串str2");
}
上面的代码运行结果为“字符串str1小于字符串str2”,原因是str1中第一位字符的Unicode值小于str2中第一位字符的Unicode值('a'的Unicode值比'c'的Unicode值要小)。
示例说明
下面我们通过两个示例,来更好的理解这三种方法的比较方式。
示例1:字符串长度比较
我们定义两个长度不相同的字符串,使用上面三种比较方式来比较两个字符串的大小。代码如下:
String str1 = "hello";
String str2 = "world!";
System.out.println(str1 + " 和 " + str2 + " 长度分别为 " + str1.length() + " 和 " + str2.length());
// 通过比较运算符来比较字符串的大小
if (str1.length() > str2.length()) {
System.out.println(str1 + " 大于 " + str2);
} else if (str1.length() < str2.length()) {
System.out.println(str1 + " 小于 " + str2);
} else {
System.out.println(str1 + " 与 " + str2 + " 长度相同");
}
// 通过equals()方法来比较字符串的内容是否相等
if (str1.equals(str2)) {
System.out.println(str1 + " 等于 " + str2);
} else {
System.out.println(str1 + " 不等于 " + str2);
}
// 通过compareTo()方法来比较两个字符串的大小
int result = str1.compareTo(str2);
if (result == 0) {
System.out.println(str1 + " 与 " + str2 + " 相等");
} else if (result > 0) {
System.out.println(str1 + " 大于 " + str2);
} else {
System.out.println(str1 + " 小于 " + str2);
}
上面的代码运行结果为:
hello 和 world! 长度分别为 5 和 6
hello 小于 world!
hello 不等于 world!
hello 小于 world!
示例2:忽略大小写的字符串比较
我们定义两个字符串,并且要求字符串的比较是不区分大小写的。使用上面三种比较方式来比较两个字符串的相等性。代码如下:
String str1 = "Hello";
String str2 = "hello";
// 通过比较运算符来比较两个字符串是否相等(不区分大小写)
if (str1.equalsIgnoreCase(str2)) {
System.out.println(str1 + " 与 " + str2 + " 相等");
} else {
System.out.println(str1 + " 与 " + str2 + " 不相等");
}
// 通过equals()方法来比较两个字符串的内容是否相等(不区分大小写)
if (str1.toLowerCase().equals(str2.toLowerCase())) {
System.out.println(str1 + " 与 " + str2 + " 相等");
} else {
System.out.println(str1 + " 与 " + str2 + " 不相等");
}
// 通过compareToIgnoreCase()方法来比较两个字符串的大小(不区分大小写)
int result = str1.compareToIgnoreCase(str2);
if (result == 0) {
System.out.println(str1 + " 与 " + str2 + " 相等");
} else if (result > 0) {
System.out.println(str1 + " 大于 " + str2);
} else {
System.out.println(str1 + " 小于 " + str2);
}
上面的代码运行结果为:
Hello 与 hello 相等
Hello 与 hello 相等
Hello 与 hello 相等
通过以上示例,我们可以清楚的知道三种比较方式各自的特点以及使用场景。在比较字符串时,我们应该根据自己的实际需求来选择合适的比较方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Java字符串比较的三种方法 - Python技术站