大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长。

平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说。我废话不多,只想写干货,希望大家喜欢。

情景一:字符串的非空判断“”

对于字符串的判断,比如字符串str,其实我们很多同学直接 str != null 去判断,这样是极其不准确的,因为str ==" "的时候,我们其实也想拦住,但的确  " "!= null,我们这行判断就没有限制住空字符串的情况。官方给到的是org.apache.commons.lang.StringUtils工具类,这个里面其实原理也是做了一层str != null,但是同时也判断了该字符串的长度,所以即使str ==" "的时候,用了工具类去判断,也会被校验住。

记住一句话,无论任何时候,对于字符串的判断,用org.apache.commons.lang.StringUtils工具类去判断就可以:非空判断用StringUtils.isNotEmpty(str)或者StringUtils.isNotBlank(str);如果是判断字符串为空,用StringUtils.isEmpty(str)或者StringUtils.isBlank(str);这样能保证你判断这一步不会出错。

情景二:数字的非空判断

       我们对于数字判断,不管是什么类型,short,long,int等等,其实都可以用不等于null去比较,这不会出什么问题。

  情景三:集合的非空判断

       对于集合的非空判断,我们很多情景是查询出一个list,然后需要用到这个list,但是必须要进行非空判断,这个时候,很多人还是用list !=null 去比较,其实会出问题的,比如如果你去这样先定义一个集合List<String> list=new ArrayList<>(),这个list 并不是为null,所以你自己去判断的时候如果还是用list !=null,显然是拦不住,这个判断没起作用。

对于集合的非空判断,我们直接用CollectionUtils.isNotEmpty(list)或者CollectionUtils.isNotBlank(list)去判断不会出错,因为里面会对元素数量进行判断。

 情景三:map的非空判断

       同理,map的非空判断,我们需要用map != null && map.size()>0去判断,这个同理,我们创建一个map对象的时候,这个map不是null,但是里面如果没有元素,我们对数量进行了判断,才真正意义上做到了对map的非空校验。

java基础之----非空判断的更多相关文章

  1. [经验] 关于 Java 中的非空判断

    在写项目的时候, 遇到一个问题 假设有一个控制层接口为: @ResponseBody @RequestMapping(value = "test", method = Reques ...

  2. java8 Optional优雅非空判断

    java8 Optional优雅非空判断 import java.util.ArrayList;import java.util.List;import java.util.Optional; pub ...

  3. proto3 不支持内建类型的非空判断即 hasXXX

    proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...

  4. List和String的非空判断

    1.如果想判断list是否为空,可以这么判断: if(null == list || list.size() ==0 ){ //为空的情况 }else{ //不为空的情况 } 2.list.isEmp ...

  5. 异常分类和异常的产生过程解析和Objects非空判断

    java.lang.Throwable类是java语言中所有错误的异常的超类. Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeExeption:运行期异常,j ...

  6. C/C++ 指针的非空判断

    一定要分得清楚C和C++的“空指针常量”不是一样的.C标准不保证NULL等于0,所以做指针非空判断时,应该用if(p != NULL):因为“上下文转换到bool值”的统一性,C++就应该用if(p) ...

  7. JAVAWEB servlet验证登录时进行完全的非空判断防止空值登录

    如果不进行完全的非空判断,那么对 "" 这种类型的空值就会导致直接登录 所以需要用下面的字符串处理方法对其进行判断 这样就可以防止空值登录了 容易出现的混淆错误: 这里的空值登录容 ...

  8. String的非空判断、Integer的非空判断、list的大小判断,对象的非空判断

    1.String的非空判断. StringUtils.isNotEmpty(String str); 2.Integer的非空判断. null != Integer ; 3.list的大小判断. li ...

  9. python字符串非空判断

    1. 字符串非空判断 2. list 非空判断

随机推荐

  1. [ Laravel 5.6 文档 ] 安全系列 —— 重置密码

    http://laravelacademy.org/post/8929.html 简介 想要快速实现该功能?只需要在新安装的 Laravel 应用下运行 php artisan make:auth(如 ...

  2. linux lvm删除导致无法启动

    要想编辑/etc/fstab文件,我们需要在系统中重新挂载根目录,使其具有可读写状态,使用如下命令: mount -o remount,rw / 该条命令的作用是,以可读写的形式重新挂载根分区. 然后 ...

  3. H3C 路由器的特点

  4. JAVA之NIO按行读写大文件,完美解决中文乱码问题

    ;//一次读取的字节长度 File fin = new File("D:\\test\\20160622_627975.txt");//读取的文件 File fout = new  ...

  5. lualatex+Beamer生成ppt

    直接放模板代码 \documentclass{beamer} % There are many different themes available for Beamer. A comprehensi ...

  6. 基于jQuery+JSON的省市联动效果

    省市区联动下拉效果在WEB应用中使用非常广泛,尤其在一些会员信息系统.电商网站最为常见,开发者一般使用AJAX实现无刷新下拉联动. 本文将讲述利用jQuery插件,通过读取JSON数据,实现无刷新动态 ...

  7. laravel构造函数和中间件执行顺序问题

    今天想重构下代码结构: BaseController.php 放置公共的中间件 class BaseController { public function __construct(){ $this- ...

  8. python模块之序列化模块

    序列化 """ 序列--字符串 序列化--其他数据类型转化为字符串数据类型 反序列化--字符串转化为其他数据类型 """ json模块 &q ...

  9. H5 操作class 类样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. JavaMail转发邮件

    最近要做一个邮件转发功能,看了好多blog,都是接受邮件,再解析邮件内容,再组装成新的邮件发出! 我按照这个不够,不错!邮件发出去了.但是好麻烦啊,接受邮件是个Message,发送邮件也是个Messa ...