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属性自然会报空指针异常
- 1 回答
- 0 关注
- 329 浏览
添加回答
举报
0/150
提交
取消