Java字符串比较

Posted 刘润森!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字符串比较相关的知识,希望对你有一定的参考价值。

前言

平时开发,经常需要对字符串进行比较操作,本章整理字符串比较的使用案例,介绍在使用过程中需要注意的细节。

版本约定

  • JDK 版本:1.8.0_231
  • Java SE API Documentation:https://docs.oracle.com/javase/8/docs/api/

正文

在平时使用过程中,字符串比较使用的较多,我们应该都知道不能使用 == 运算符比较两个字符串是否相等,这个运算符只能够确定两个字串是否放置在同一个位置上。

我们比较字符串关注的是它的内容是否相等,所以我们知道需要使用 String 类的 equals 方法检测两个字符串是否相等。

比如比较两个字符串是否相等,使用如下写法:

public static void main(String[] args) 
    String str1 = "test";
    String str2 = "test";
    System.out.println(str1.equals(str2));

程序,输出:

true

当然,如果我们想要检测两个字符串是否相等,且不区分大小写, 可以使用 equalsIgnoreCase 方法。

public static void main(String[] args) 
    String str1 = "test";
    String str2 = "TEST";
    System.out.println(str1.equalsIgnoreCase(str2));

运行程序,输出:

true

到这里字符串比较还没有结束,因为上面的代码漏考虑了一个问题,如果字符串 str1 或者 str2 是 null,需要怎么处理呢?

比如把上面的代码中 str1 设置成 null:

public static void main(String[] args) 
    String str1 = null;
    String str2 = "test";
    System.out.println(str1.equals(str2));

运行程序,输出:

Exception in thread "main" java.lang.NullPointerException

它会报空指针异常,这就非常危险了,大家看看你们的代码中有多少是直接使用这种 equals 方法比较的?推荐使用 commons-lang3 中的 StringUtils 工具类比较两个字符串是否相等。

public static void main(String[] args) 
    String str1 = null;
    String str2 = "test";
    System.out.println(StringUtils.equals(str1, str2));

同样的,它也提供了 equalsIgnoreCase 方法比较两个字符串是否相等,且不区分大小写。

总结

字符串的比较推荐使用 StringUtils 工具类中的 equals 方法。

以上是关于Java字符串比较的主要内容,如果未能解决你的问题,请参考以下文章

java中两个字符串如何比较大小

java中如何比较两个时间字符串的大小

java中两个字符串如何比较大小?

java中的字符串比较方法

java字符串日期排序比较问题

为啥JAVA不可以用“==”来比较两个字符串是不是相等?