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

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

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

首先贴出他们俩的区别

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

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

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

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

第一个条件 第二个条件 结果
true true(不判断) true
true false(不判断) true
false true true
false false false

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

上一篇:Dart语言学习笔记(3)


下一篇:3-7学习笔记