我们首先来看下面几个示例:
import java.util.*;
public class Test {
public static void main(String []args) {
String s1 = new String();
String s2 = "";
String s3 = null;
String s4;
if(s1 == null) {
System.out.println("s1_1");
}
if(s1.isEmpty()) {
System.out.println("s1_2");
}
if(s2 == null) {
System.out.println("s2_1");
}
if(s2.isEmpty()) {
System.out.println("s2_2");
}
if(s3 == null) {
System.out.println("s3_1");
}
/** s3是null,未分配地址,故无法使用isEmpty()方法,空指针异常
if(s3.isEmpty()) {
System.out.println("s3_2");
}
*/
/** s4未初始化,故不可以进行判断,报错。
if(s4 == null) {
System.out.println("s4_1");
}
if(s4.isEmpty()) {
System.out.println("s4_2");
}
*/
}
}
结果:
s1_2
s2_2
s3_1
分析:
s1通过new String()方法创建了字符串,分配了地址,是字符串且值为""。
s2分配了地址,是字符串且值为“”。
s3未分配地址,为空。
s4未分配地址,未初始化。
应用:
进行字符串等于判断时:
- 为 “” 时, 通过 String.equals("") 方法进行判断
- 为 null 时,通过 string == null 进行判断