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语言的特点JVM JDK 和 JRE(.class字节码文件)Java 程序从源代码到运行的步骤