我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 判空的常见方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java 判空的常见方法

一、 对象判空

if (obj != null) {    // 进行对象非空判断}Object obj = null; // 或者 obj = new Object();if (obj == null) {    // 对象为空}

另外,Guava 库还提供了一个更方便的方法,使用方式如下:

import com.google.common.base.Objects;if (Objects.isNull(obj)) {    // 对象为空}

二、 字符串判空

List list = new ArrayList<>();if (list == null || list.size() == 0) {    // list 为空}

简单,但需要写太多代码判断,会显得有些麻烦。或 使用 Apache Commons Lang3 提供的 判断字符串是否为空或者只包含空格字符。这种方式使用起来非常方便:

import org.apache.commons.lang3.StringUtils;if (StringUtils.isBlank(str)) {    // 字符串为空}

还可采用  Java 8 引入的 String#isEmpty() 方法判断字符串是否为空字符串:

if (str == null || str.isEmpty()) {    // 字符串为空}

还有 Java 11 引入的 String#isBlank() 方法判断字符串是否为空或者只包含空格字符:

if (str == null || str.isBlank()) {    // 字符串为空}

 若还要 判断字符串是否为空或null:

String str = null; // 或者 str = "";if (str == null || str.length() == 0 || str.trim().length() == 0) {    // 字符串为空或null}

也可以使用 Apache Commons Lang3 库中的 StringUtils 工具类中的 isBlank() 方法进行判断:

import org.apache.commons.lang3.StringUtils;if (StringUtils.isBlank(str)) {    // 字符串为空或null或只包含空白字符}
直接使用 == 判断是否为 null,或使用 equals() 判断是否等于空字符串 "":String str = null;if (str == null || str.equals("")) {    // 字符串为空}使用 isEmpty() 方法判断字符串是否为空字符串 "":String str = "";if (str.isEmpty()) {    // 字符串为空}使用 isBlank() 方法判断字符串是否为空或全是空格:String str = "   ";if (StringUtils.isBlank(str)) {    // 字符串为空或全是空格}使用正则表达式判断字符串是否为空或只包含空格:String str = "    ";if (str.matches("\\s*")) {    // 字符串为空或只包含空格}需要注意的是,第三种方法需要导入 StringUtils 类,而第四种方法虽然不需要导入任何类,但比较麻烦,建议使用前三种方法中的一种。

三、 List 判空

        使用 if (list == null || list.isEmpty()) 判断 List 是否为 null 或者是否为空列表。或使用 Java 8 引入的 isEmpty() 方法判断 List 是否为 null 或者是否为空列表:但注意 isEmpty() 方法只会判断集合是否为空,而不会判断集合是否为 null。因此,使用 Collection#isEmpty() 方法之前,要先判断集合是否为 null。如果为 null,则该方法会抛出空指针异常。正确的使用方法如下:

List list = ...;if (list != null && !list.isEmpty()) { // 先判断 list 是否为 null,再判断 list 是否为空    // 进行操作}if (list == null || list.isEmpty()) {    // List 为空} 

上述代码中,先使用 list!=null 来判断 list 是否为 null,如果是,则不会进入条件语句中。如果不是,则使用 !list.isEmpty() 来判断 list 是否为空,如果不为空,则进入条件语句中进行操作。

 

四、Map 判空

Map map = null; // 或者 map = new HashMap<>();if (map == null || map.isEmpty()) {    // Map为空或null}
private void putInfoToMap(Map map ,String key ,String value){              if(StringUtils.isEmpty(key)){            return;    }    if(StringUtils.isEmpty(value)){            map.put(key, " ");    }else{            map.put(key, value);       }    }

 

 

 

五、数组判空

String[] array = null; // 或者 array = new String[10];if (array == null || array.length == 0) {    // 数组为空或null}

六、Set判空

Set set = null; // 或者 set = new HashSet<>();if (set == null || set.isEmpty()) {    // Set为空或null}

        在判断集合、数组、对象是否为空时,进行非空判断时最好先判断对象是否存在,否则在对象不存在的情况下操作对象可能会导致空指针异常的发生。

七、文件判空

    public SalaryExcelOperatVo uploadExcel(MultipartFile multipartFile) {        if (multipartFile==null) {            log.error("文件不能为空");             throw new RuntimeException("上传Excel文件内容为空,请重新上传!");        }        String fileName = multipartFile.getOriginalFilename();        //判断文件是否是excel文件        assert fileName != null;        if (!fileName.endsWith("xls") && !fileName.endsWith("xlsx")) {            log.error(fileName + "不是Excel文件!");            throw new RuntimeException(fileName + "不是Excel文件!");        }        //保存文件到本地        File dir1 = new File("/roots/uploadFile/xzExcel");        if (!dir1.exists()) {            dir1.mkdirs();        }        //统一日期格式        LocalDateTime current = LocalDateTime.now();        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");        String formatted = current.format(formatter);        //加上三位随机数        Random random = new Random();        int end3 = random.nextInt(999);        File file1 = new File(dir1.getAbsolutePath() + File.separator + formatted + "-" + end3 + "-" + multipartFile.getOriginalFilename());        try {            multipartFile.transferTo(file1);        } catch (IOException e) {            e.printStackTrace();        }        log.info("【上传薪资Excel文件已保存到本地:{}】",file1.getAbsolutePath());        //创建返回对象SalaryExcelOperatVo的实例化对象: result        SalaryExcelOperatVo result = new SalaryExcelOperatVo();        //获取excel文件sheet1 的内容        ArrayList inSalaries1 = readExcel1(file1.getAbsolutePath());        ArrayList vo1 = new ArrayList<>();        SalaryStaffPerOneListVo oneListVo ;        for(InSalary inSalary1:inSalaries1){            oneListVo = new SalaryStaffPerOneListVo();            BeanUtils.copyProperties(inSalary1,oneListVo);            vo1.add(oneListVo);}        result.setSheetOne(vo1);        //获取excel文件sheet2 的内容        ArrayList inSalaries2 = readExcel2(file1.getAbsolutePath());        ArrayList vo2 = new ArrayList<>();        SalaryStaffPerTwoListVo twoListVo ;        for(InSalary inSalary2:inSalaries2){            twoListVo = new SalaryStaffPerTwoListVo();            BeanUtils.copyProperties(inSalary2,twoListVo);            vo2.add(twoListVo);        }        result.setSheetTwo(vo2);        return result;    }


八、StringUtils 工具类

        StringUtils 提供了许多字符串操作相关的方法,其中比较常用的包括 isEmpty、isNotEmpty、isBlank 和 isNotBlank,它们的作用如下:

  • isEmpty:判断字符串是否为 null 或长度是否为 0;
  • isNotEmpty:判断字符串是否不为 null 且长度不为 0;
  • isBlank:判断字符串是否为 null、空字符串或全为空格字符;
  • isNotBlank:判断字符串是否不为 null、不为空字符串且不全为空格字符。

isEmpty 和 isNotEmpty 是根据字符串的长度来判断的,而 isBlank 和 isNotBlank 还包括对空格字符的处理。另外,如果字符串为 null,无论使用哪个方法都会返回 true。

以下是 StringUtils.isEmpty、StringUtils.isNotEmpty、StringUtils.isBlank 和 StringUtils.isNotBlank 的源码实现(相对简化),可以更好地理解它们的区别:

public class StringUtils {    // 判断字符串是否为空(长度是否为 0)    public static boolean isEmpty(CharSequence cs) {        return cs == null || cs.length() == 0;    }    // 判断字符串是否不为空(长度是否不为 0)    public static boolean isNotEmpty(CharSequence cs) {        return !isEmpty(cs);    }    // 判断字符串是否为空白(包括 null、空字符串和全为空格字符)    public static boolean isBlank(CharSequence cs) {        int length;        if (cs == null || (length = cs.length()) == 0) {            return true;        }        for (int i = 0; i < length; i++) {            if (!Character.isWhitespace(cs.charAt(i))) {                return false;            }        }        return true;    }    // 判断字符串是否不为空白(不包括 null、空字符串和全为空格字符)    public static boolean isNotBlank(CharSequence cs) {        return !isBlank(cs);    }}
private void validChoiceInfo(InSalary data, AnalysisContext context) {    if(isBlank(data.getUserName())){        throw new ExcelAnalysisException(String.format("上传失败:第%s行员工姓名为空",context.readRowHolder().getRowIndex()));    }    if(isBlank(data.getIdNumber())){        throw new ExcelAnalysisException(String.format("上传失败:第%s行员工身份证信息为空",context.readRowHolder().getRowIndex()));    }}    private void validChoiceInfo(InSalary data, AnalysisContext context) {if(StrUtil.isBlank(data.getUserName())){    throw new ExcelAnalysisException(String.format("上传失败:第%s行员工姓名为空",context.readRowHolder().getRowIndex()));}if(StrUtil.isBlank(data.getIdNumber())){    throw new ExcelAnalysisException(String.format("上传失败:第%s行员工身份证信息为空",context.readRowHolder().getRowIndex()));}} 


        这两段代码实现的功能是一样的,都是对员工姓名和身份证信息进行非空判断,并在为空的情况下抛出异常。不同之处在于第一段代码使用了 isBlank() 方法,而第二段则使用了 StrUtil.isBlank() 方法。isBlank() 方法是在 JDK 11 中新增的,能够判断字符串是否为空或全为空格,因此不需要再使用 trim() 方法进行判断。而 StrUtil.isBlank() 方法是在 Hutool 库中提供的,功能与 isBlank() 类似,但需要将 Hutool 库引入项目中才能使用。另外,两段代码还有一个细微的差别。第一段代码使用了 if(isBlank(data.getUserName())) 的形式进行判断,而第二段代码使用了 if(StrUtil.isBlank(data.getUserName())) 的形式。这两种写法的效果是一样的,只是调用方法的方式略有不同。

来源地址:https://blog.csdn.net/weixin_49171365/article/details/130543354

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 判空的常见方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java判断是否空的方法

java判断是否空的方法:1、判断字符串或者对象是否为空StringUtils的判断StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方
java判断是否空的方法
2019-06-30

php判断字段是否不为空的常见方法有哪些

这篇文章主要介绍“php判断字段是否不为空的常见方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php判断字段是否不为空的常见方法有哪些”文章能帮助大家解决问题。方法一:使用isset()函
2023-07-05

详解Go语言各种常见类型的默认值和判空方法

本文主要介绍了详解Go语言各种常见类型的默认值和判空方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-16

java判断空值的方法是什么

在Java中,可以使用以下方法来判断一个值是否为空:使用if语句和等号(==)进行比较:if (value == null) {// 值为空} else {// 值不为空}使用if语句和equals()方法进行比较:if (value.
2023-10-24

java判断字符串不为空的方法

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。一、判断一个字符串str不为空的方法有:1. str!=null;2. "".equals(str);3. st
java判断字符串不为空的方法
2014-06-27

java判断文件是否为空的方法

在File类中并没有提供判断文件是否为空的方法,但可以借助length()方法的返回值进行判断。(推荐:java视频教程)length()方法定义为:public long length()如果文件不存在或文件为空时,length()方法返回0。示例代码如下:
java判断文件是否为空的方法
2018-10-04

java中判断文件是否为空的方法

在File类中并没有提供判断文件是否为空的方法,但可以借助length()方法的返回值进行判断。length()方法定义为:public long length()如果文件不存在或文件为空时,length()方法返回0。示例代码:File file = new
java中判断文件是否为空的方法
2020-12-30

java判断object不为空的方法是什么

Java中判断一个对象是否为空,可以使用以下方法:1. 使用if语句判断对象是否为null:```javaif (object != null) {// 对象不为空的处理逻辑}```2. 使用Objects类的isNull方法判断对象是否为
2023-09-25

java中判断数组是否为空的方法

一维数组需要根据数组长度判断,如果为0,则为空,反之不是;二维数组需要根据第一行的数组长度判断,如果为0,则为空,反之不是。实例如下:public class Main { public static void main(String[] args) {
java中判断数组是否为空的方法
2016-02-29

java常见的加密方法有哪些

Java常见的加密方法有以下几种:1. 对称加密:对称加密算法使用相同的密钥对数据进行加密和解密,常见的对称加密算法有DES、3DES、AES等。2. 非对称加密:非对称加密算法使用两个不同的密钥对数据进行加密和解密,常见的非对称加密算法有
2023-09-06

Java中StringBuilder()常见方法有哪些

在Java中,StringBuilder类提供了多个常见的方法用于字符串的操作,以下是一些常用的方法:1. append(String str):将指定字符串追加到当前字符串的末尾。2. insert(int offset, String
2023-09-13

Java几种常见的四舍五入的方法

Java中常见的四舍五入的方法有以下几种:1. Math.round() 方法:该方法接收一个 float 或 double 类型的参数,返回最接近参数的 long 类型的整数值。若参数为正数,则小数部分大于等于 0.5 时向上取整,小于
2023-08-22

Java中FileNotFoundException异常的常见原因和解决方法

在Java编程中,FileNotFoundException是一个常见的异常,它表示在尝试访问文件时无法找到指定的文件。本文将介绍FileNotFoundException异常的常见原因,并提供相应的解决方法和示例代码。 文件路径错误:F
Java中FileNotFoundException异常的常见原因和解决方法
2023-12-23

java判断实体对象为空的方法是什么

Java判断实体对象是否为空的方法有多种方式,以下是其中一些常用的方法:1. 使用if语句判断对象是否为空:```javaif (object == null) {// 实体对象为空} else {// 实体对象不为空}```2. 使用eq
2023-09-16

java判断集合是否为空的方法是什么

在Java中,判断集合是否为空有几种方法可以使用:使用集合的isEmpty()方法:该方法返回一个boolean值,表示集合是否为空。例如:List list = new ArrayList();if(list.isE
java判断集合是否为空的方法是什么
2024-03-06

总结java中判断对象是否为空的方法

我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的,因为这只是比较引用地址是否相同,所以可以采取下面的方法来进行判断。1.根据for...in遍历对象,如果存在则返回true,否则返回falsefor ( let i in o
总结java中判断对象是否为空的方法
2017-08-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录