注:可以直接看最下面的代码示例
示例:
如比较两个对象数组中的元素是否相同时
arr1:[null,null,3]
arr2:[0,null,null]
- 当执行 arr1[0].equals(arr2[0]) 即
null.equals(0)
时会报空指针异常NullPointerException
- 当执行 arr1[1].equals(arr2[1]) 即
null.equals(null)
时会报空指针异常NullPointerException
- 当执行 arr1[2].equals(arr2[2]) 即
3.equals(null)
时返回false
解决方法:
涉及到null的比较时,使用Objects.equals(a, b)
就可以避免空指针异常了
小结:
- a.equals(b), a 是null, 抛出NullPointException异常。
- a.equals(b), a不是null, b是null, 返回false
- Objects.equals(a, b)比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意:不会抛出空指针异常
代码示例:
null.equals("abc") → 抛出 NullPointerException 异常
"abc".equals(null) → 返回 false
null.equals(null) → 抛出 NullPointerException 异常
Objects.equals(null, "abc") → 返回 false
Objects.equals("abc",null) → 返回 false
Objects.equals(null, null) → 返回 true