JAVA中isEmpty和null以及""的区别

来源:互联网 发布:知彼而知已博客 编辑:程序博客网 时间:2024/05/17 19:57

这是一个比较容易混淆的概念,为了弄清楚这个问题,最好的方法当然是写程序来验证,上代码吧~~:


[java] view plaincopyprint?
  1. /** 
  2.  *  
  3.  */  
  4. package JavaTest;  
  5.   
  6. /** 
  7.  * @author wxwevenpc 
  8.  * @version 1.0 2012-11-25 
  9.  */  
  10. public class TestNull {  
  11.   
  12.     /** 
  13.      * @param args 
  14.      */  
  15.     public static void main(String[] args) {  
  16.         String a = new String();  
  17.         String b = "";  
  18.         String c = null;  
  19.         if(a.isEmpty())  
  20.         {  
  21.          System.out.println("String a = new String");  
  22.         }  
  23.         if(b.isEmpty())  
  24.         {  
  25.          System.out.println("String b = \"\"");  
  26.         }  
  27.         if(c==null)  
  28.         {  
  29.          System.out.println("String c =null");  
  30.         }  
  31.         if(null == a) {  
  32.             System.out.println("String a =null");  
  33.         }  
  34.         if(a=="")  
  35.         {  
  36.          System.out.println("a = ''");  
  37.         }  
  38.     }  
  39.   
  40. }  
以上输出:

[java] view plaincopyprint?
  1. String a = new String  
  2. String b = ""  
  3. String c =null  

分析:

[java] view plaincopyprint?
  1. 此时a是分配了内存空间,但值为空,是绝对的空,是一种有值(值存在为空而已)  
  2. 此时b是分配了内存空间,值为空字符串,是相对的空,是一种有值(值存在为空字串)  
  3. 此时c是未分配内存空间,无值,是一种无值(值不存在)