Java 空字符串和 字符串为null的区别

Posted 木剑配酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 空字符串和 字符串为null的区别相关的知识,希望对你有一定的参考价值。

  之前一直没有搞清楚 字符串为空和字符串为null的区别,今天写代码一直出现NullPointerException异常,我一直没有搞清楚,后来发现我是这样写的

String s = null;
s = xxx.getString();
if (!s.isEmpty() && s != null) {
System.out.println("ok");
} 

 我看了半天也没有看懂(拒绝嘲讽)。 所以我看着别人的博文,写一篇作笔记

 

1. 不同之处

  null表示一个字符串对象的引用为空,String a=null;  声明了一个字符串变量a,变量a的引用为空。所以a没有指向任何的内存空间,在堆中也没有开辟任何的空间

  空字符串表示一个字符串对象引用的值为空,String a =“”  声明了一个字符串变量a,变量a的值为空。而a指向了空字符串的内存空间。

2. 判断字符串为空的方法

  (1) if(s != null && s.equals(""));

  (2) if(s != null && s.length() == 0);

 public int length() {
        return value.length;
    }

  (3) if(s != null && s.isEmpty());   

    Java SE 1.6添加的方法,底层的实现和2差不多。

    实现的方法:

public boolean isEmpty() {
        return value.length == 0;
    }

  (4)   if (s != null && s == "");

注:不要和我一样写反了,两个判断逻辑写反了,就可能出现 NullPointerException异常。





以上是关于Java 空字符串和 字符串为null的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java空字符串与null的区别和判断字符串是不是为空的方法

hive的空字符串与null

Java判断空字符串和对象是否为null

Java判断空字符串和对象是否为null

空字符串和空字符串之间的区别[重复]

equals()和==null的用法区别