为了账号安全,请及时绑定邮箱和手机立即绑定

一个问题?有关||的应用和空指针异常

一个问题?有关||的应用和空指针异常

慕莱坞森 2018-08-13 06:10:15
if(str.isEmpty()){str = DEFAULT_STRING;}上面的代码有时会给出一个NullPointerException。 如何重写条件(从A-D中选择),使这个问题不会发生?A:str == null && str.isEmpty()B:str == null || str.isEmpty()C:str.isEmpty() && str == nullD:str.isEmpty() || str == null 答案是B。我想知道B和D有什么区别?为什么D不对?
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

推荐你去看看源码

str == null  是看这个对象是否分配内存空间,  如果没有分配自然就是null ,  也就是这个引用是null  

str.isEmpty() 是判断这个对象是否为空值, 但是需要这个对象引用不是null, 也就是说必须分配内存空间, 才可以

public boolean isEmpty() {    return count == 0;
}

可以看上面源码 这个方法是判断这个对象的count == 0 

 

 

你问题B 和 D的区别  , 一个是先判断对象引用是否为null(也就是是否分配内存空间) , 然后再判断是否为空值;  这个是正确的;

另一个先判断是否为空值, 然后再判断对象引用是否为null,  但是 这个对象引用都是null, 这里在调用这个空引用的对象count属性自然会报空指针异常


查看完整回答
反对 回复 2018-08-22
  • 1 回答
  • 0 关注
  • 329 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信