Skip to content

Java中isEmpty(),null以及空字符串的区别

372字约1分钟

java

2024-10-24

isEmpty() 分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空) "" 分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串) null 是未分配内存空间,无值,是一种无值(值不存在)

得出的结论:

isEmpty()

1.如果不分配内存空间,不能用isEmpty(),否则报空指针异常

2.isEmpty()不能分辨出值是空还是空字符串

null

1.null只能分辨出值是否不分配内存空间

“”

1.不管值是否分配内存空间都不会报错

例:

public class Test {
    public static void main(String[] args) {
        //分配内存空间,值为空
        String a = new String();
        //分配内存空间,值为空字符串
        String b = "";
        //未分配内存空间
        String c = null;

        if (a != null) {
            System.out.println("a值存在");
        }
        if (b != null) {
            System.out.println("b值存在");
        }
        if (c == null) {
            System.out.println("c值不存在");
        }
        if (a == "") {
            System.out.println("a值存在,为空字符串");
        }
        if (b == "") {
            System.out.println("b值存在,为空字符串");
        }
        if (c == "") {
            System.out.println("c值存在,为空字符串");
        }
        if (a.isEmpty()) {
            System.out.println("a值存在,为空字符串或者为空");
        }
        if (b.isEmpty()) {
            System.out.println("b值存在,为空字符串或者为空");
        }
    }

}

结果:

#a值存在
#b值存在
#c值不存在
#b值存在,为空字符串
#a值存在,为空字符串或者为空
#b值存在,为空字符串或者为空