### 判断字符串是否相等

字符串作为对象如对其进行比较不能简单的使用比较运算符“==”，因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同，但两个对象的内存地址是不同的。使用比较运算符仍然会返回 false。

例 使用比较运算符比较两个字符串，实例代码如下：

String tom = new String("I am a student");

String jerry = new String("I am a student");

boolean b = (tom == jerry);

此时布尔型变量 b 的值为 false，因为字符串是对象，tom、jerry 是引用，内存示意图如图 1 所示。

图 1 内存示意图

因此要比较两个字符串内容是否相等，应使用 equals()方法和 equalsIgnoreCase()方法。

l equals()方法

如果两个字符串具有相同的字符和长度，则使用 equals()方法进行比较时，则返回 true。

语法：

str.equals(String otherstr)

str、otherstr：参加比较的两个字符串对象。

l equalsIgnoreCase()方法

使用 equals()方法对字符串进行比较时，是区分大小写的。而使用 equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等。返回结果仍为 boolean 类型。

语法：

str.equalsIgnoreCase(String otherstr)

str、otherstr：参加比较的两个字符串对象。

通过下面的例子可以看出 equals()方法和 equalsIgnoreCase()方法的区别。

例 在项目中创建类 Opinion，在主方法中创建 String 型变量，实现判断两个字符串是否相等，并将结果输出。

public class Opinion { //创建类

public static void main(String args[]) { //主方法

String s1 = new String("abc"); //创建字符串对象 s1

String s2 = new String("ABC"); //创建字符串对象 s2

String s3 = new String("abc"); //创建字符串对象 s3

boolean b = s1.equals(s2); //使用 equals()方法比较 s1 与 s2

boolean b2 = s1.equalsIgnoreCase(s3); //使用 equalsIgnoreCase()方法比较 s1 与 s2

System.out.println(s1 + " equals " + s2 + " :" + b); //输出信息

System.out.println(s1 + " equalsIgnoreCase " + s2 + " :" + b2);

}

}

运行结果如图 2 所示。

图 2 运行结果