物件的字串屬性, 在沒賦值的情況下是null
class Student{
String name;//沒有賦值,初始化的情況下,name==null
}如果要避免出現null ,那麼可以採取下面幾種方式 ,下面的方式比較多,可以根據實際情況,使用幾種.
public class Person {
String name;
public Person() {//無慘構造器
name=""; // 直接給name賦值為""
}
public Person(String name) {//有引數構造器
this.name = validateName(name);//先驗證引數name是否為空,為空字串""
public String getName() {//獲取name屬性的值
return name == null ? "" : name;// 獲取name屬性,如果為null,那麼返回空字串""
public void setName(String name) {//設定name屬性的值
this.name =validateName(name);//驗證name是否為空, 如果為空,那麼返回空字串""
private String validateName(String name) {//驗證字串是否為空.為空就返回空字串
return name == null ? "" : name;
public static void main(String[] args) {
Person p = new Person();
p.setName(null);
if("".equals(p.name)&&"".equals(p.getName())) {
System.out.println("空字串");
}最後字串的比較. 使用確定不為null的字串去呼叫equals方法.
因為值null的字串呼叫equals方法,會出現空指標異常
string a = null;
string b = "";
b.equals(a); //false
a.equals(b); //空指標異常
物件的字串屬性, 在沒賦值的情況下是null
class Student{
String name;//沒有賦值,初始化的情況下,name==null
}如果要避免出現null ,那麼可以採取下面幾種方式 ,下面的方式比較多,可以根據實際情況,使用幾種.
public class Person {
String name;
public Person() {//無慘構造器
name=""; // 直接給name賦值為""
}
public Person(String name) {//有引數構造器
this.name = validateName(name);//先驗證引數name是否為空,為空字串""
}
public String getName() {//獲取name屬性的值
return name == null ? "" : name;// 獲取name屬性,如果為null,那麼返回空字串""
}
public void setName(String name) {//設定name屬性的值
this.name =validateName(name);//驗證name是否為空, 如果為空,那麼返回空字串""
}
private String validateName(String name) {//驗證字串是否為空.為空就返回空字串
return name == null ? "" : name;
}
public static void main(String[] args) {
Person p = new Person();
p.setName(null);
if("".equals(p.name)&&"".equals(p.getName())) {
System.out.println("空字串");
}
}
}最後字串的比較. 使用確定不為null的字串去呼叫equals方法.
因為值null的字串呼叫equals方法,會出現空指標異常
string a = null;
string b = "";
b.equals(a); //false
a.equals(b); //空指標異常