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
浙公网安备 33010602011771号