在 Java 中比较字符串
几乎所有的 Java 开发人员都会在某些时候需要比较两个字符串来完成一个应用程序的逻辑。字符串变量是一个字符的集合。要了解对字符串的比较操作,我们首先需要了解字符串的属性。
- 字符串是不可变的。这意味着它们不能增长,对字符串的任何改变都会导致一个新的字符串形成。这是因为它们内部是由字符数组支持的,是不可变的。
- 每当我们说要创建一个字符串时,就会创建两个放在不同内存区域的对象。一个是在堆区创建,而第二个是在 String 常量池中创建。字符串引用将机器指向堆区对象。
比如说
String mystring = "World"
在本例中,mystring
指向存放字符串 World
的堆区。
下面是 java 中用来比较字符串的四种方法,本文将详细解释。
compareTo()
方法。- 相等
==
运算符 equals()
方法contentEquals()
方法;
使用 compareTo()
方法比较 Java 中的字符串
它对两个字符串进行词法上的比较。它的工作原理是首先给字符串中的每个字符分配一个 Unicode 值,然后比较这两个字符串。这个过程将结果返回为零、正数或负数。
- 当两个比较的字符串在词法上相等时,结果为零。
- 如果第一个字符串比第二个字符串大,结果为正数。
- 当第二个字符串大于第一个字符串时,结果为负。
compareTo()
方法有两种使用方法。
比较两个字符串文字
让我们比较一下 string1 和 string2。我们比较这两个字符串的结果是一个 int
类型。例子:
public class CompareToCode {
public static void main(String args[]) {
String string1 = "now";
String string2 = "now";
int result = string1.compareTo(string2);
System.out.println(result);
}
}
输出:
0
比较字符串和对象
compareTo()
方法也允许用字符串比较未引用的对象。例子:
public class CompareTo {
public static void main(String args[]) {
String string1 = "now";
int result = string1.compareTo("now");
System.out.println(result);
}
}
输出:
0
compareTo()
区分大小写
compareTo()
方法是区分大小写的。这意味着,即使两个字符串相同,如果它们不一致,它也会显示为不同。例如:
public class CompareTo {
public static void main(String args[]) {
String string1= "hello";
String string2 ="HELLO";
int result= string1.compareTo(string2);
System.out.println(result);
}
}
输出:
-32
世界上的 hello
和 HELLO
与上面的处理方式不同,因此我们得到的结果是-32。
然而,这个字符串类中的另一个方法忽略了大小写敏感度 - compareToIgnoreCase()
。例如:
public class CompareToIgnoreCase {
public static void main(String args[]) {
String string1= "hello";
String string2 ="HELLO";
int result= string1.compareToIgnoreCase(string2);
System.out.println(result);
}
}
输出:
0
相等 ==
操作符方法
它是一个 java 字符串比较方法,比较两个对象是否在同一个内存位置。例子
public class EqualityOperator {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS == twoS);
}
}
输出:
false
==
运算符比较 oneS 和 twoS 对象,检查它们是否相同。oneS
和 twoS
这两个 Strings 都是不同的引用,因此返回 false
.oneS
和 twoS
是两个不同的对象。然而,它们都有相同的值在其中。
equals()
方法
这是在 Java 中用来比较两个字符串的值的方法。该方法的输出是 true 或 false。如果被比较的字符串的值不相等,那么该方法返回 false。如果被比较的字符串是相等的,那么该方法返回 true。例如
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS.equals(twoS));
}
}
输出:
true
equals()
方法区分大小写
equals()
方法是区分大小写的,因此将相同的词盖不同的词看成不同的词。例如
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equals(twoS));
}
}
输出:
false
在上面的例子中,使用 equals()
方法将 wow
和 WOW
进行比较,返回 false。
但是,如果你想使用 equals()
方法而不考虑大小写敏感性,你可以使用 equalsToIgnoreCase()
方法。对于上面的例子,equalsIgnoreCase()
将返回 true。
public class EqualsIgnorecase {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equalsIgnoreCase(twoS));
}
}
输出:
true
contentEquals()
方法
这也是一个 java 字符串比较方法,它将字符串缓冲区和字符串进行比较,并返回 false 或 true。如果字符串与被比较的字符串缓冲区相匹配,则该方法返回 true。如果字符串与被比较的字符串缓冲区不匹配,则该方法返回 false。如果字符串与被比较的字符串缓冲区不匹配,则该方法返回 false。
例子:
public class ContentEquals {
public static void main(String args[]) {
String firstS = new String("Here we are");
StringBuffer secondS = new StringBuffer("Here we are");
System.out.println(firstS.contentEquals(secondS));
}
}
输出:
true