前一段时间我阅读别人的代码,发现有的时候用isEmpty,有的时候用null,有的时候用""。我很困惑三者之间的区别,于是我就自己写了一个程序来验证一下
1 public class Test { 2 public static void main(String[] args) { 3 //分配内存空间,值为空 4 String a = new String(); 5 //分配内存空间,值为空字符串 6 String b = ""; 7 //未分配内存空间 8 String c = null; 9 10 if (a != null) {11 System.out.println("a值存在");12 }13 if (b != null) {14 System.out.println("b值存在");15 }16 if (c == null) {17 System.out.println("c值不存在");18 }19 if (a == "") {20 System.out.println("a值存在,为空字符串");21 }22 if (b == "") {23 System.out.println("b值存在,为空字符串");24 }25 //dead code26 if (c == "") {27 System.out.println("c值存在,为空字符串");28 }29 if (a.isEmpty()) {30 System.out.println("a值存在,为空字符串或者为空");31 }32 if (b.isEmpty()) {33 System.out.println("b值存在,为空字符串或者为空");34 }35 // Null pointer access: The variable c can only be null at this location36 // if (c.isEmpty()) {37 // System.out.println("String c=null");38 // }39 }40 41 }
View Code
运行的结果如下
1 a值存在2 b值存在3 c值不存在4 b值存在,为空字符串5 a值存在,为空字符串或者为空6 b值存在,为空字符串或者为空
View Code
得出的结论:
isEmpty()
1.如果不分配内存空间,不能用isEmpty(),否则报空指针异常
2.isEmpty()不能分辨出值是空还是空字符串
null
1.null只能分辨出值是否不分配内存空间
“”
1.不管值是否分配内存空间都不会报错
原标题:isEmpty与null、的区别
关键词: