java的==、equals、isEmpty的区别

 

   是否分配内存空间 值  备注
isEmpty()  是 值为空(有值)

isEmpty()使用的前提是字符串对象已经被分配了内存空间,

如果对象没有被分配空间而使用isEmpty()报空指针错误,

isEmpty等同于string.length()==0,比如对字符串对象的引用c: c.isEmpty(),

报NullPointException,而字符串对象的引用a,b都不会。

null 无值(值不存在) 

null可以用来判断字符串对象的引用是否是空指针,

比如c == null,结果是true,因为c的确是空指针。 

''''  是 空字符串 

空格字符串,虽然在输出显示时候和空值一样,都是空的,

但是在运行时空格字符串表示该对象的内存空间里面有内容

(是空格,字符个数是空格个数),所以在使用 length() 输出时值为空格个数,

使用 isEmpty() 输出为 false,使用 equals("") 判断为 false。 

举例:

package 字符串;

/**
 * 功能描述:比较isEmpty、Null,equals('')的区别
 *
 * @author nxf
 * @since 2020-06-29
 */
public class testEmptyNull {
    public static void main(String[] args) {
        String a = new String();
        String b = "";
        String c = null;

        testString(a);
        testString(b);
        testString(c);
    }

    private static void testString(String str){
        if (str == null){
            System.out.println("1.null");
        }
        if (str.isEmpty()){
            System.out.println("2.isEmpty");
        }
        if (str.equals("")){
            System.out.println("3.\"\"");
        }
        System.out.println("-------------");
    }
}

运行结果:

  str == null str.isEmpty() str.equals("")
String a = new String();  
String b = "";  
String c = null; 报java.lang.NullPointerException异常 报java.lang.NullPointerException异常

结论:

1.判断一个 String 变量是否是空对象:与 null 进行 == 比较,不能使用 equals()、isEmpty()、"" 等进行判断,因为空对象还未被实例化。

2.判断String的值是否为空:可以采用equals("") 方法比较对象的内容是否为空值;isEmpty() 方法来判断 String 对象的字符个数是否为空值。 

判断一个String为空的安全方法:string == null || string.isEmpty()

 

 

 

参考文献:

【1】Java 中 String 的 isEmpty() 与 null 与 "" 区别解析

【2】永久解决Java String类的isEmpty(),null的区别_玩着玩着就完了的博客-CSDN博客_java string isempty

posted @ 2020-06-29 14:36  nxf_rabbit75  阅读(284)  评论(0)    收藏  举报