String.isEmpty() 方法使用报空指针异常?那怎么才能更好的判断String返回值为空的情况呢?

因为用了isEmpty() 这个方法,然后控制台就报了一个这

16-Apr-2022 12:13:50.900 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [springDispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
 java.lang.NullPointerException
	at com.bs.controller.UsersController.editUserType(UsersController.java:506)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

报错放在上边了,我想的是判断一下返回的String字符串是不是空的,然后代码是这样写的
在这里插入图片描述

queryById.getUserSponsortwo().isEmpty()

报错原因:

String在调用isEmpty()方法时判断是否为空,在String为null的时候,就会报空指针异常啦。这个原因大概就是在String为null的时候是没有创建String对象的,所以就不能调用isEmpty()。但是实际上String是空的情况有三种

String=null;
String=" ";
Srtring string=new String();

其中就会出现String=null;调用isEmpty()报错的情况,所以在这三种情况都出现的场景,都是选项使用 工具类 StringUtils

解决办法:

首先要使用工具类 StringUtils ,首先得导入pom依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

然后调用 isBlank() 方法,String为空 返回 FALSE

import org.junit.jupiter.api.Test;
import org.junit.platform.commons.util.StringUtils;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class test1 {
    @Test
    public static void main(String[] args) {

            String string=null;
            String string1="";
            String string2=new String();
//        //whetherIsKong(string);
//        whetherIsKong(string1);
//        whetherIsKong(string2);
            newwhetherIsKong(string);
            newwhetherIsKong(string1);
            newwhetherIsKong(string2);
    }

    public static void whetherIsKong(String string){
        if(string==null){
            System.out.println("string==null");
        }
        if("".equals(string)){
            System.out.println("string为 ‘ ’");
        }
        if(string.isEmpty()){
            System.out.println("string isEmpty");
        }
    }
    public static void newwhetherIsKong(String string){
        if(StringUtils.isBlank(string)){
            System.out.println("string is Blank");
        }
        if(StringUtils.isNotBlank(string)){
            System.out.println("string is NotBlank");
        }
    }

祝您万事顺心,没事点个赞呗,关注一下也行啊,如有不对请指正❥

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Casey·Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值