Android字符串判空方案差异记录

背景

最近在回顾自己以往写下的一些代码并修改相关需求,安装后进行相关调试,出现了一个惊人的崩溃闪退现象,一看日志,原来是空指针异常导致的,还是字符串判空的时候出现的空指针,这就纳闷了,赶紧找了一翻资料,把这个问题解决并记录下来。

字符串判空方案

这里先要记录一点,只声明了字符串变量,不给它赋值的话,系统会默认给它赋值null,如:

	private String name;
    @Test
    public void testStr() {
        Log.w("hao","name:" + name);
    }

输出的结果便是:2020-03-26 15:51:47.703 17792-17815/com.xxx.xxx W/hao: name:null,这个可以说是常识了,但偶尔可能也会犯点小错,把这个臆想为这个空:"",这就有可能酿成大错了。

以下便是Android常用的一些字符串判空方法:
  1. equals(),我们可能会经常这样用:
	if (null != name && !name.equals("")) {

	}

组合起来用,如果直接是用 !name.equals("") 就很容易造成崩溃闪退,因为源码的实现是默认了这个name是不为null的,一旦为null,则报空指针异常。

  1. isEmpty(),这个方法也可以判空:
	if (null != name && !name.isEmpty()) {

	}

刚开始用这个方法的时候,因为觉得简洁就直接用 !name.isEmpty(),没把前面的加上,结果出现崩溃才发现这个方法使用前也是需要判断字符串是不是为null的,为null时使用和上例一样抛出空指针异常,所以使用时千万要记住加上判断null值。

  1. length(),这个方法也可以判空:
	if (null != name && name.length() > 0) {

	}

此方法与上两种方法判空的思路一样,先判null值,否则一旦为null值,还调用 length() 就会抛出java.lang.NullPointerException.

  1. TextUtils.isEmpty(),这个方法判空比较简洁和安全:
	if (!TextUtils.isEmpty(name)) {

    }

因为它里面的实现是长这样子的:

	/**
     * Returns true if the string is null or 0-length.
     * @param str the string to be examined
     * @return true if str is null or zero length
     */
    public static boolean isEmpty(@Nullable CharSequence str) {
        return str == null || str.length() == 0;
    }

已经为我们进行了null值判断,这样就可以避免空指针异常的出现,也不需要我们手动去判null值。
本文目的是记录项目中因为自己不小心而出现的bug的解决方案,内容简单,如有错误敬请指出批评。

End

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值