java null new String()和空字符串

  今天遇到一个bug,前端传来一个空值a,使用System.out.println(a == ""),打印了false。使用isEmpty()方法返回了true。这个地方比较容易混淆,特地来研究一下为什么。上代码。

  public static void main(String[] args) throws Exception {
        String a = new String();
        String b = "";
        String c = null;
        if(a == "")
            System.out.println("a == ''");
        if(a.isEmpty())
            System.out.println("a is Empty");
        if("".equals(a))
            System.out.println("a equals ''");
        if(b == "")
            System.out.println("b == ''");
        if(b.isEmpty())
            System.out.println("b is Empty");
        if("".equals(b))
            System.out.println("b equals ''");
        //报java.lang.NullPointerException
//        if(c == "")
//            System.out.println("c == ''");
        //报java.lang.NullPointerException
//        if(c.isEmpty())
//            System.out.println("c is Empty");
        if("".equals(c))
            System.out.println("c equals ''");
    }

控制台打印结果:

a is Empty
a equals ''
b == ''
b is Empty
b equals ''

分析:1.a是分配了内存空间,但是值为空,是绝对的空,是一种有值(值存在为空);

            2.b是分配了内存空间,但是值为空字符串,是相对的空,是一种有值(值存在为空字符串);

            3.c是为分配内存空间,无值,是一种无值(值不存在);

 

总结:在确定值不为null的情况下,可以使用isEmpty()来进行判断。

            为null,不为null都可以使用"".equals(a)进行判断。

           尽量避免使用a == "",进行判断。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值