字符串的三种状态

        String a=null;String b="xiaoxian";String c="";

String a = null ; 申明一个string类型的 a,同时在内存里申请了一个地址,但是该地址不指向任何引用地址;
String c = “” ;申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址;

如果我们使用isEmpty判断字符串是否为空

        System.out.println(a.isEmpty());System.out.println(b.isEmpty());System.out.println(c.isEmpty());

输出结果为:

Exception in thread “main” java.lang.NullPointerException
at d.main(d.java:13)
false
true

最后为null的字符串报了空指针异常,为什么会这样呢?

isEmpty是Java中用于判断某种容器是否有元素的系统库函数。如用来判断ArrayList,HashSet,HashMap是否有元素等。

这里顺便提一下,字符串的实质就是字符数组

也就是说该方法是用来判断该引用地址中是否存在值,前提条件是指向引用地址,但是null不会指向引用地址,就像地址表一样,地址表为空,自然报空指针异常。

在springboot项目中我们可以使用org.springframework.util.ObjectUtils解决这个问题

ObjectUtils.isEmpty底层实质就是和null进行比较

其源码:

    public static boolean isArray(@Nullable Object obj) {return obj != null && obj.getClass().isArray();}public static boolean isEmpty(@Nullable Object[] array) {return array == null || array.length == 0;}public static boolean isEmpty(@Nullable Object obj) {if (obj == null) {return true;} else if (obj instanceof Optional) {return !((Optional)obj).isPresent();} else if (obj instanceof CharSequence) {return ((CharSequence)obj).length() == 0;} else if (obj.getClass().isArray()) {return Array.getLength(obj) == 0;} else if (obj instanceof Collection) {return ((Collection)obj).isEmpty();} else {return obj instanceof Map ? ((Map)obj).isEmpty() : false;}}

我们在写spingboot项目时就可以使用该方法来判断字符串是否为空。

eg:

        //判断是否有值if(!ObjectUtils.isEmpty(status)){wrapper.eq("status",status);}if (!ObjectUtils.isEmpty(title)){wrapper.eq("title",title);}

【springboot】.isEmpty()和ObjectUtils.isEmpty()的使用注意点相关推荐

  1. ObjectUtils.isEmpty() 和 null 区别

    分配内存和赋值的区别: isEmpty () :判断值是否为空,即使已经分配内存,但没有赋值,依然是空 null: 判断值是否为空,没有分配内存, 可能出现空指针异常 public class IsE ...

  2. List.isEmpty()与CollectionUtils.isEmpty的区别

    List.isEmpty()与CollectionUtils.isEmpty的区别 今天在codediff开发的代码的时候发现他用了List.isEmpty()与CollectionUtils.isE ...

  3. TextUtils.isEmpty()和String.isEmpty()的区别

    TextUtils.isEmpty和String.isEmpty的区别 直接看源码 TextUtils.isEmpty() String.isEmpty() 用法 直接看源码 TextUtils.is ...

  4. java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别

    我认为isEmpty()更有效率.然而,智能编译器可能会优化equals("")调用.从 OpenJDK source: 671 public boolean isEmpty() ...

  5. java object isempty,Java JsonObject.isEmpty方法代码示例

    import org.json.simple.JsonObject; //导入方法依赖的package包/类 public DockerContainerDetail getDetail(Docker ...

  6. java map isempty_Java中HashMap的isEmpty()方法: HashMap.isEmpty() - Break易站

    Java中的HashMap HashMap类的java.util.HashMap.isEmpty() 方法用于检查映射的空白.如果HashMap中没有键值对或映射,则该方法返回True,否则返回Fal ...

  7. java vector.isempty,Java Vector isEmpty()方法与示例

    向量类isEmpty()方法isEmpty()方法在java.util包中可用. isEmpty()方法用于检查此Vector是"空"还是"非空". isEmp ...

  8. springboot整合quartz实现动态添加、修改、删除、停止job,以及优化quartz工具类,支持自动停止逻辑

    原文链接:http://pengfeiguo.com/article/16 什么是Quartz? 一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的. 优点: 支持集群下定时任务处理 支持任 ...

  9. Quartz定时任务 - Springboot之Quartz

    什么是Quartz? 一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的. 优点: 支持集群下定时任务处理 支持任务并发阻塞(上一个任务完成后,才能继续下一个任务) 支持通过API对任务的操 ...

最新文章

  1. px,em,rem,vh,vw,vmin,vmax的区别
  2. MangoDB使用总结
  3. C# 中对COOKIES的操作
  4. System类入门学习
  5. Deep Q-learning
  6. 第一次个人作业--词频统计总结
  7. Logisim下载,安装与使用
  8. 什么是 NAS? 为什么要用 NAS?有什么好玩的功能?
  9. Guava: Joiner
  10. Python趣味绘图,一闪一闪亮晶晶,满天都是小星星
  11. 中国BBS社区前10名
  12. 西岸风格合成器-Eventide Newfangled Audio Generate 1.2.1 WiN
  13. redis通过key模糊搜索_jedis模糊查询key
  14. 奥密克戎“后遗症”,比病毒更可怕
  15. [Unity] 制作游戏 小球爱碰撞
  16. Qtcreator远程调试arm开发板程序指南
  17. 联想p720工作站安装linux,联想发布ThinkStation P920和P720工作站 采用至强处理器
  18. javascript 过滤_功能性JavaScript中的过滤和链接
  19. 让其他局域网电脑也可以访问本机的NAT虚拟机
  20. 晕菜~~~竟然出了这样的事情~~

热门文章

  1. 最全的apple pay苹果支付步奏
  2. Android日常开发收集的Tips
  3. Win7解决telnet不是内部或外部命令的方法
  4. Mac OS系统进不去,重装也不行,只能抹盘安装,Espionage的加密文件如何救出?
  5. 教你一招:Win10切换输入法与Win7一样(Ctrl + 空格)
  6. Aspose.Slides for .NET V23 Crack
  7. 这是你不曾见过的最全的ASO应用市场优化方式(下篇)
  8. 点击按钮复制文本框内容
  9. Hypervisor操作系统间的通信技术
  10. NORDIC蓝牙芯片NRF51系列蓝牙4.0NRF51822/51802/51422/51824