Java String字符串类的equals方法如何避免NullPointerException

本文详细介绍了Java中String类的equals方法使用技巧,包括如何避免空指针异常等问题,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

equals()是String类提供的一个方法,是专门负责字符窜内容的比较。

字符串常量就是String的匿名对象。

比如:”hello“就是一个字符串常量,我们通常定义一个字符串会这么做:String str = "hello",其实这种方式实际上就相当于将一个String匿名对象设置了一个名字。

我们在开发中需要的注意的equals()的的使用方法,避免NullPointerException:

package com.jike.jdk8;

public class EqualsTest {

	public static void main(String[] args) {
		String input = null;
		if (input.equals("hello")) {
			System.out.println("hello world!");
		}

	}

}

这段代码很简单。那么运行就会爆出Exception in thread "main" java.lang.NullPointerException,空指针异常。我们在使用equals()的方法时候只需要把 ”字符串常量” 放在equals()前面,String匿名对象也都拥有String类的所有方法和属性。

package com.jike.jdk8;

public class EqualsTest {

	public static void main(String[] args) {
		String input = "hello";
		if ("hello".equals(input)) {
			System.out.println("hello world!");
		}

	}

}
我们只要这么调整一下就不错出现空指针异常!

### Java 中空字符串 `equals` 方法比较 在 Java 中,使用 `equals` 方法来比较两个字符串时需要注意一些细节。当尝试将一个非空字符串与 `null` 或者空字符串 (`""`) 进行比较时,如果被比较的对象是 `null`,则会触发 `NullPointerException`。 对于空字符串 `" "` 来说,可以直接调用其 `equals` 方法而不会引发异常[^3]: ```java String emptyStr = ""; boolean result1 = emptyStr.equals(null); // 抛出 NullPointerException ``` 为了避免这种情况发生,通常推荐的做法是在比较之前先检查目标对象是否为 `null`: ```java public boolean isNullOrEmpty(String str) { return (str == null || "".equals(str)); } ``` 此外,为了防止潜在的空指针异常并提高代码健壮性,建议总是把确定不为空的一方放在 `.equals()` 调用左侧位置[^4]: ```java "knownNonEmptyString".equals(possibleNullOrEmpty); ``` 这样即使右侧变量可能为 `null`,也不会导致程序崩溃。 #### 使用 Apache Commons Lang 库简化操作 除了手动编写辅助函数外,还可以借助第三方库如 Apache Commons Lang 提供的功能更强大的工具类来进行此类判断: ```java import org.apache.commons.lang3.StringUtils; // 判断给定字符串是否为空白(即 null 或仅含空白字符) System.out.println(StringUtils.isBlank(null)); // true System.out.println(StringUtils.isBlank("")); // true System.out.println(StringUtils.isBlank(" ")); // true System.out.println(StringUtils.isBlank("hello")); // false ``` 这种方法不仅简洁明了而且减少了自定义逻辑错误的风险。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值