String字符串判空陷阱!!!!!

有个判空操作,从某个List<实体>中拿到某个属性,然后要对它进行判空操作,因为后面要get属性,如果为空,会报空指针错误。

恰巧我还有个 赋值操作,就是get得到的这个值要赋给一个变量,拿着这个变量去跟下一次for List实体里面get到的值进行比对,这就出现问题了,我把判空的if操作与赋值的操作并列进行了,大概就是下面这个样:

for(Object obj : objs){
			  if(!"".equals(obj.getString()) && null != obj.getString()){
				  //这里的getString()代表的是实体里的某个属性		
			   if(strChange.equals(obj.getString())) {
				   ...//一些列操作
			   }
			  }else{ 
				  strChange= obj; //strChange是个变量
			  }
		}


这就会出现问题了,因为判空是在else赋值之前,他们是并列关系,如果obj.getString()为空了,则会赋给strChange,

for循环下一次的时候,当obj.getString()不为空,走到 

if(strChange.equals(obj.getString()))

这一步时,依然会报 空指针 错误

why??????

后来才发现,原来此时的strChange 为null,

null.equals() 这样的操作是错误的!!!!!!!!!!!

"".equals()  or  null == str 这样都是可以的。

所以要把if判空放在最外层,就ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值