先上代码便于理解
public static void main(String[] args) {
String a=new String();
String b="";
String c=null;
if(a.isEmpty()){
System.out.print("String a=new String()");
}
if(b.isEmpty()){
System.out.print("String b=''");
}
/*if(c.isEmpty()){
System.out.print("c=null");} 空指针错误 */
if(a.equals("")){
System.out.print("a.equals(\"\")");
}
if(c==null){
System.out.print(" c=null");
}
}
输出
a:分配了储存空间,但值为空,绝对空
b: 分配了储存空间,值为空字符串,相对空
c: 未分配储存空间,无值,值不存在
总结
isEmpty():分配了储存空间,其储存的值为空,绝对的空,无值
“” :分配了储存空间,其储存的值为空的字符串,相对的空,值为空字符串
null :未分配储存空间,无值,值不存在
注意:
isEmpty()方法用来判断某个字符串是否为 空字符串。
String的isEmpty()方法,在String为null的时候,会出现空指针错误。例如 c.isEmpty()
new String()和””,会有占位符,即创建了对象,而null的时候,String 不会创建占位符。
对于字符串来说isEmpty和""是等价的。
附一:
IsEmpty()可用来判断某种容器中是否有元素。也可用来判断ArrayList,HashSet,HashMap是否有元素等。
判断一个顺序容器ArrayList里面是否有元素,有返回false,否返回true。
ArrayList<Integer> E = new ArrayList<Integer>();
System.out.println(E.isEmpty());//true
E.add(5);
System.out.println(E.isEmpty());//flase
也可用来判断HashSet或者HashMap等容器是否有元素。