您的位置:

Java中的字符串比较:String.equals()方法

在Java中,进行字符串的比较是非常常见的操作。比如说,判断两个字符串是否相等,或者比较字符串的大小。为了解决这个问题,JAVA提供了一系列方法来进行字符串的比较操作。其中比较常用的是String.equals()方法。

一、String.equals()方法的基础使用

String.equals()方法用来比较两个字符串的内容是否相同,如果相同返回true,否则返回false。它是区分大小写的。

public boolean equals(Object anObject)

示例代码如下:

String str1 = "Hello";
String str2 = "hello";
if(str1.equals(str2)){
   System.out.println("两个字符串相同");
}else{
   System.out.println("两个字符串不相同");
}

在这个例子中,由于str1和str2是由不同的字符组成,所以输出的结果是“两个字符串不相同”。

二、String.equals()方法的高级用法

String.equals()方法不仅可以比较两个字符串是否相同,还可以比较字符串区域是否相同。这种比较方法可以识别字符串中的子字符串是否相同。

public boolean equals(String anotherString)
public boolean equalsIgnoreCase(String anotherString)
public boolean contentEquals(StringBuffer sb)
public boolean equals(Object anObject)
public boolean regionMatches(int toffset, String other, int ooffset, int len)
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

其中,equals()方法用来比较两个字符串是否相同,equalsIgnoreCase()方法用来比较两个字符串是否相同,但是忽略大小写。regionMatches(int toffset, String other, int ooffset, int len)方法用来比较两个字符串的一个区域是否相同。contentEquals(StringBuffer sb)方法用来比较当前字符串是否和一个字符串缓冲区内容相等。

示例代码如下:

String str1 = "HelloWorld";
String str2 = "world";
System.out.println(str1.regionMatches(5,str2,0,5));   //false
System.out.println(str1.regionMatches(true,5,str2,0,5));   //true

在这个例子中,regionMatches()方法比较的是在字符串中的第5个字符开始,与“world”这个字符串的前5个字符是否相同。第二个regionMatches()方法中的true表示比较时忽略大小写。

三、String.equals()方法的对比

在Java中,字符串的比较方式有很多,除了equals()方法,还有compareTo()方法和==操作符。

compareTo()方法是用来比较两个字符串大小的,返回值为int类型。如果当前字符串与另一个字符串相等,则返回0;如果当前字符串小于另一个字符串,则返回小于0的值;如果当前字符串大于另一个字符串,则返回大于0的值。

public int compareTo(String anotherString) 

示例代码如下:

String str1 = "Hello";
String str2 = "hello";
String str3 = "Hello";
int result1 = str1.compareTo(str2);
int result2 = str1.compareTo(str3);
System.out.println(result1);    //-32
System.out.println(result2);    //0

在这个例子中,str1与str2的内容不相等,且由不同的大小写字母组成,所以result1的值为-32(小于0)。str1与str3的内容相等,所以result2的值为0。

==操作符用来比较两个字符串的地址是否相等。如果两个字符串的地址相等,则返回true,否则返回false。

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关键字创建的新对象,所以它的地址与str1和str2不同。

四、总结

Java中的字符串比较有很多种方式,其中比较常用的是使用String.equals()方法。此外,compareTo()方法可以用来比较字符串大小,而==操作符用来比较两个字符串的地址是否相等。

示例代码:

String str1 = "Hello";
String str2 = "hello";
if(str1.equals(str2)){
   System.out.println("两个字符串相同");
}else{
   System.out.println("两个字符串不相同");
}

String str3 = "HelloWorld";
String str4 = "world";
System.out.println(str3.regionMatches(5,str4,0,5));   //false
System.out.println(str3.regionMatches(true,5,str4,0,5));   //true

String str5 = "Hello";
String str6 = "Hello";
String str7 = new String("Hello");
int result1 = str5.compareTo(str6);
int result2 = str5.compareTo(str7);
System.out.println(result1);    //0
System.out.println(result2);    //-0

System.out.println(str5 == str6);    //true
System.out.println(str5 == str7);    //false