Java中String类的isEmpty方法null以及""的区别

Posted tangyongathuse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中String类的isEmpty方法null以及""的区别相关的知识,希望对你有一定的参考价值。

参考:http://blog.csdn.net/violetjack0808/article/details/50668195

内容:

一直以来对String的这三个空挺晕的,刚好同事问我,我也学习下。

从别人博客上看到的是这样的:
    isEmpty()
        分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)  
    ""
        分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串)  
    null
        是未分配内存空间,无值,是一种无值(值不存在)

然而我还是挺晕忽 所以写了个demo验证下~

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String a = new String();
    String b = "";
    String c = null;
    testString(a);
    testString(b);
    testString(c);
}

private void testString(String str){
    if (str == null){
        Log.e("testNull", "null");
    }
    if (str.isEmpty()){
        Log.e("testNull", "isEmpty");
    }
    if (str.equals("")){
        Log.e("testNull", "引号");
    }
    Log.e("testNull", "----------------");
}


由于只会玩android,就写了个Android的demo。效果一样啦~
打log结果为:
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: isEmpty
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: 引号
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: ----------------
02-15 14:41:10.655 31875-31875/uding.testanimation E/testNull: null

再然后str就报空指针错误了~这里可以发现好像isEmpty和""的效果是一样滴啊。
又看了下isEmpty的源码:

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

就是说只要String的文本数量为0就返回true,而""里面文本数量就是为0。

综上所述:
    null是未分配内存空间的“空”~
    isEmpty和引号这两个“空”与null相对(即它们 != null),且都是已分配内存(好像差不多一个意思)

(PS:尚不清楚isEmpty和""是否有何不同之处,有知道的小伙伴希望可以评论告知,谢谢~)






























以上是关于Java中String类的isEmpty方法null以及""的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java中isEmpty方法如何使用?

java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z

从源码分析java.lang.String.isEmpty()

Java常用类库API

StringUtils中isEmpty 和isBlank的区别:

119Java中String类之通过isEmpty判断是否为空字符串