判断字符串是否相等

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

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

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

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

boolean b = (tom == jerry);

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

 

     1  内存示意图

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

l        equals()方法

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

语法:

str.equals(String otherstr)

strotherstr:参加比较的两个字符串对象。

l        equalsIgnoreCase()方法

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

语法:

str.equalsIgnoreCase(String otherstr)

strotherstr:参加比较的两个字符串对象。

通过下面的例子可以看出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()方法比较s1s2

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

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

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

                  }

}

运行结果如图2所示。

 

          2  运行结果