发布于2020-11-19 20:56 阅读(899) 评论(0) 点赞(18) 收藏(4)
记录下关于java编程过程中,对于获取数据放入list集合之后的判断,往往出现空指针这种坑。
在实际的编程过程中,需要通过数据库查询等方式获取数据,但是此时需要根据获取到的数据量进行判断,决定后续的业务处理逻辑,数据往往添加到List集合中,因此涉及到对List集合的判空方式。
Java对于“空”的理解和常识不太相同,可以理解为编程中需要判断不存在和内容没有的区别,也就是null
和""
的区别。
通俗的来讲:就是去判断两个空间是否存在的区别。好比现在告诉你有两个杯子:杯子A和杯子B,其中杯子A压根就不存在,null
就相当于这种情况;而杯子B存在但里面是空的没有任何东西,这就相当于""
。
实例化两个杯子,杯子1(list1)和杯子2(list2),然后分别执行倒水的操作。
先倒杯子1的水,判断是否为空,写了5个if,分别表示
1、杯子1不存在
2、杯子1里面没有水
3、杯子1不存在或杯子1没有水
4、杯子1没有水或杯子1不存在
5、杯子1存在同时杯子1有水
接着倒杯子2的水,也是判断是否为空。
其中:list.isEmpty()
方法等价于list.size()==0
package action;
import java.util.ArrayList;
public class TestList {
private static ArrayList<?> list1 = null;
private static ArrayList<?> list2 = new ArrayList<String>();
private static void daoshui1() {
//1
if(list1==null)
System.out.println("杯子1不存在");
//2
try {
if(list1.isEmpty())
System.out.println("杯子1里面没有水");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3
if(list1==null||list1.isEmpty()) {
System.out.println("杯子1不存在或杯子1没有水");
}
//4
try {
if(list1.isEmpty()||list1==null) {
System.out.println("杯子1没有水或杯子1不存在");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//5
if(list1!=null&&!list1.isEmpty()) {
System.out.println("杯子1存在同时杯子1有水");
}
}
private static void daoshui2() {
//1
if(list2==null)
System.out.println("杯子2不存在");
//2
if(list2.isEmpty())
System.out.println("杯子2里面没有水");
//3
if(list2==null||list2.isEmpty()) {
System.out.println("杯子2不存在或杯子2没有水");
}
//4
if(list2.isEmpty()||list2==null)
System.out.println("杯子2没有水或杯子2不存在");
//5
if(list2!=null&&!list2.isEmpty()) {
System.out.println("杯子2存在同时杯子2有水");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
daoshui1();
daoshui2();
}
}
可以看到对杯子1判断是否有水的操作都报错了,可以理解为,杯子都不存在怎么判断,系统都找不到你说的杯子1,就报个错给你看看。
接着向后看,if(list1==null||list1.isEmpty())
没有报错,是因为||
或从左到右,当判断为null
之后,就判定为true
了,也就不判断是不是没有水了。第4个if判断中换了个顺序就报错了也是这个道理,先对一个不存在的实物判断有没有就会报错。5不报错也是这道理,当判断不为null
的时候就已经判定为false
了。
杯子2之所以能够完成所有的判断,是因为杯子2是真实存在的(分配了内存),只是里面没有东西。
综上,对于一个集合或容器判空的时候,首先要进行null
的判断,再进行空的判断。也就是看东西是不是真的存在之后再判断里面有没有东西。
原文链接:https://blog.csdn.net/jerrygaoling/article/details/109749919
作者:javagogogo
链接:http://www.javaheidong.com/blog/article/896/dd8114c2f80250f4e344/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!