利用StringUtils可以避免空指针问题
这篇文章的来源于在项目中的空指针问题,利用StringUtils可以避免这个空指针问题。
有时候代码中是会出现如下情况if("".equals(str) && str == null) {}, 反正我以前判断字符串为空的时候经常这么干,但实际上这么写代码很啰嗦,
commons-lang-2.5.jar包中供了一个很方便的工具类StringUtils,而且还有效的避免空指针问题。
如果我们在进行编码的时候,声明了一个变量:
例如 String message=null;
然后在下面进行if(message.equeals("某")),如果message没有初始化,则会报空指针的错误,提示message不能为空。
但是我们在用stringutils时可以避免这个问题:
且看这个例子:

从上面我们可以看到,如果为空的时候也可以进行比较。会得出false的结果,所以我们用它可以避免空指针的问题。
延伸一下看下equals和Stringutils这个工具类的使用吧:
关于equals这个有一些坑,我们来看看:
equals变量在前面或者在后面有什么区别吗?这是一个坑点
看代码吧:

a.equals("true");和"null".equals(a);有什么区别的?
答案:前者会抛空指针异常,后者不会;
剖析:如果a=null,String对象就会是一个空对象,空对象说明没有equals方法,所以就会报空指针异常;
又如,后者a=null,"null".equals(a);结果永远都为false,原因直接看源码:

为了避免这个坑点,还是使用另外一种方式吧!
使用org.apache.commons.lang包下的StringUtils.equals(String str1, String str2)方法

关于Stringutils的使用我们参考这个博客吧,内容太多了,我们借鉴下吧!
http://blog.csdn.net/Mint6/article/details/77965110
这篇文章也写的不错,我们可以看看
利用StringUtils可以避免空指针问题的更多相关文章
- 利用StringUtils工具类进行String为空的判断
利用工具类进行String类型数据的非空判断,让自己的项目代码变得更加的简洁明了. 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0 下面是 St ...
- java异常处理机制详解
java异常处理机制详解 程序很难做到完美,不免有各种各样的异常.比如程序本身有bug,比如程序打印时打印机没有纸了,比如内存不足.为了解决这些异常,我们需要知道异常发生的原因.对于一些常见的异常,我 ...
- JAVA程序员一定知道的优秀第三方库(2016版)
几乎每个程序员都知道要“避免重复发明轮子”的道理——尽可能使用那些优秀的第三方框架或库,但当真正进入开发时,我却经常发现他们有时并不知道那些轮子在哪里.最近,我在业余时间带几个年轻的程序员一起做了一个 ...
- atitit.避免NullPointerException 总结and 最佳实践 o99
atitit.避免NullPointerException 对于返回集合的方法很简单,只需要返回空的集合就可以了,而不是null. 1 一种可选办法就是不使用空返回值,而是空对象模式: 1 直接抛出e ...
- [转]JAVA程序员一定知道的优秀第三方库(2016版)
原文地址:http://blog.csdn.net/zxc123e/article/details/51418163 几乎每个程序员都知道要“避免重复发明轮子”的道理——尽可能使用那些优秀的第三方框架 ...
- DaTaX当成jar包当作第三方库启动的相关问题
上一篇已经大致的将了本地状况下DaTaX的纯Java代码启动的过程 http://www.cnblogs.com/blogsofmy/p/8287637.html不了解的请点超链接 这次我们来说说文件 ...
- Java数组操作十大方法 (转)
定义一个Java数组 String[] aArray = new String[5]; String[] bArray = {"a","b","c&q ...
- C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
写 C++的同学想必有太多和内存打交道的血泪经验了,常常被 C++的内存问题搅的焦头烂额.(写 core 的经验了)有很多同学一见到 core 就两眼一抹黑,不知所措了.笔者 入"坑&quo ...
- 线索二叉树的理解和实现(Java)
线索二叉树的基本概念 我们按某种方式对二叉树进行遍历,将二叉树中所有节点排序为一个线性序列,在该序列中,除第一个结点外每个结点有且仅有一个直接前驱结点:除最后一个结点外每一个结点有且仅有一个直接后继结 ...
随机推荐
- python3 ,AttributeError: module 'tensorflow' has no attribute 'merge_summary'
error:tensorflow有些方法属性被改了, self.summary_writer = tf.train.SummaryWriter(summary_dir)改为:summary.FileW ...
- 第四次ScrumMeeting博客
第四次ScrumMeeting博客 本次会议于10月28日(六)22时整在3公寓725房间召开,持续15分钟. 与会人员:刘畅.辛德泰.窦鑫泽.张安澜.赵奕. 1. 每个人的工作(有Issue的内容和 ...
- python中取整的几种方法
#encoding:utf-8import math #向上取整print "math.ceil---"print "math.ceil(2.3) => " ...
- Scrum立会报告+燃尽图(十月二十三日总第十四次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...
- lintcode-473-单词的添加与查找
473-单词的添加与查找 设计一个包含下面两个操作的数据结构:addWord(word), search(word) addWord(word)会在数据结构中添加一个单词.而search(word)则 ...
- Linux安装weblogic
一.软件安装 1. 安装前的准备工作 1.1 首先请确认您要安装的WebLogic版本所在的平台已通过了BEA的认证,完整的认证平台列表请参考 http://e-docs.bea.com/wls/ce ...
- mac下mysql5.7.10密码问题
mysql5.7.10刚安装好,会生成一个随机密码. 如果没记住这个随机密码,那么到mysql/bin/下执行mysql_secure_installation命令 按照提示重置密码和其他选项. ps ...
- 第186天:js深入理解构造函数和原型对象
1.在典型的oop的语言中,如java,都存在类的概念,类就是对象的模板,对象就是类的实例.但在js中不存在类的概念,js不是基于类,而是通过构造函数(constructor)和原型链(propoty ...
- 第107天:Ajax 实现简单的登录效果
使用 Ajax 实现简单的登录效果 Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术.这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载. ...
- 第75天:jQuery中DOM操作
一.基础操作 1.html() 使用html()方法读取或者设置元素的innerHTML. 就是相当于javascript里头的innerHTML. 2.text() 使用text()方法读取或者设置 ...