java中空串""与null的区别与判断

要判读String是否为空字符串,比较简单,只要判断该String的length是否为0就可以,或者直接用方法isEmpty()来判断。

    但很多时候我们也会把由一些不可见的字符组成的String也当成是空字符串(e.g, space, tab, etc),这时候就不能单用length或isEmpty()来判断了,因为technically上来说,这个String是非空的。这时候可以用String的方法trim(),去掉前导空白和后导空白,再判断是否为空。

例:

public class TestEmpty

   {
       public static void main(String[] args){
              String a = "       ";      
              // if (a.isEmpty())
             if (a.trim().isEmpty())
             {
                System.out.println("It is empty");
             }

            else 
            {
               System.out.println("It is not empty");
            }

       }

  }

结果:It is empty



声明一个String str

如果说str是null,那么内存根本没有创建字符串对象,并由str引用。

如果说str是空串,那么确定存在一个由str引用的字符串对象,只不过这个字符串的值是空

null用来表示没有实例存在,而“”本身就是一个实例,有自己的对象空间,和“123456”这样的字符串没有区别。

其次要注意:

           1)当oracle 字段里面的值为空时,从oracle读出来的是字符串"null"(可能是程序读出来的时,将空对象转换成为了字符串“null”)。

     (2)还有URL得参数时如:oylin.jsp?id=<%=id%>,当id为空对象是,有可能也将空对象转换成为了字符串“null”,在写程序的时候要多加注意。
另一个问题就是String的null或控制的判断处理:有以下两种方法
(name  != null && !name.equals("")){
    dosomething();
}
或者
if(!"".equals(name)){//将“”写在前面,不管name是否为null,都不会报错
   dosomething();
}

你可能感兴趣的:(java中空串""与null的区别与判断)