conn.closed()和conn == null的区别

conn.closed()和conn == null的区别

今天,我在连接数据库时遇到了一个问题,所以分享出来.
出错1
出错2
没错,晴乐诗缘本人第一眼也没看出来是什么问题;
然后,我查阅了一系列的资料最终发现,是因为没有搞清楚conn.closed()和conn == null的区别
这是改过后正确的代码:
正确

首先贴出他们俩的区别

1、conn != null 这个是不确定上面的connection是否被初始化而判断的,因为很多时候写代码,使用懒加载模式,一般是先定义一个Connection conn=null,使用的时候才去初始化它的对象,这样可以减少内存的浪费。这个时候如果不确定conn是否被初始化的时候,最好在关闭前加上conn != null判断,不然直接关闭conn有可能报空指针错误。

2、conn.isClosed() 这个是判断当前连接是否被关闭,这个首先要保证Connection已经生成实例了。如果没有生成实例,就会报错,

那么我们的为什么要切换他们的顺序呢?

这里就涉及到 || 运算符的概念;(或运算):
|| 运算符的规则是,当第一个为true时,后面的条件不会判断,直接进入if,而当第一个条件为false时,才会判断第二个条件

第一个条件第二个条件结果
truetrue(不判断)true
truefalse(不判断)true
falsetruetrue
falsefalsefalse

这是,因为我们在之前的代码中声明了Connection conn = null;
而并没有生成conn 的实例
所以当conn.closed在前面时,就会报出java.lang.NullPointerException的错误;
调换位置后,首先判断了conn == null,当他满足后,并不会判断后一个条件,所以,这样对程序进行了优化;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师兄白泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值