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

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

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

对于字符串的判断,比如字符串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. 如何把thinkphp 的url改为.html

    ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行.例如,我们设置'URL_HTML_SUFFIX ...

  2. hadoop2.6.0 + hbase-1.0.0 伪分布配置

    1 基本配置 主机名: 192.168.145.154 hadoop2 ======= 2 etc/hadoop下文件配置 1)core-site.xml <configuration> ...

  3. C#的类

    一.String类 1.Length 字符的长度 string x = Console.ReadLine();int i = x.Length;// Length 是获取字符串的长度(从1开始数)Co ...

  4. 命名实体识别视频51cto

    https://edu.51cto.com/center/course/lesson/index?id=402918 https://edu.51cto.com/course/18466.html

  5. spark mllib docs,MLlib: RDD-based API

    MLlib: RDD-based API This page documents sections of the MLlib guide for the RDD-based API (the spar ...

  6. 关于 vue 生命周期 钩子函数 事件

    vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染->更新->渲染.卸载等一系列过程,我们称这是vue的生命周期. 通俗的将就是vue实例从创建到销毁 ...

  7. H3C 其他OSPF显示命令

  8. SVN:符号

    问号:未纳入SVN控制之下的新文件感叹号:已经修改过还没上传的文件红叉:准备删除尚未提交绿勾:从服务器上取下来没修改过的文件黄色感叹号:发生冲突蓝色加号:准备加到服务器上还没提交

  9. Mail.Ru Cup 2018 Round 2 C. Lucky Days(拓展欧几里得)

    传送门 待参考资料: [1]:https://www.cnblogs.com/Patt/p/9941200.html •题意 a君,b君存在幸运周期: a君在第[ L1+k·t1,R1+k·t1]天为 ...

  10. 备战省赛组队训练赛第十四场(UPC)

    codeforces:传送门 upc:传送门 外来题解: [1]:https://blog.csdn.net/ccsu_cat/article/details/86707446 [2]:https:/ ...