string類型與null比較用==拼卵,string類型與空字符串“”比較用equals
String str1 = null; str引用為空
String str2 = ""; str引用為空串
直接點就是null沒有分配內(nèi)存空間,而""分配了內(nèi)存空間绿渣,因此str1還不是一個實例化的對象偿枕,而str2已經(jīng)實例化汤功。
注意因為null不是對象吼过,""是對象霞掺。所以比較的時候必須是 if(str1==null){....}和if(str2.equals("")){....}
內(nèi)存地址比較用equals,null用等號比較其做。
因此,如果str1=null;下面的寫法錯誤:
if(str1.equals("")||str1==null){
//如果str1沒有值赁还,則返回false
}
正確的寫法是 if(str1==null||str1.equals("")){
//先判斷是不是對象妖泄,如果是,再判斷是不是空字符串
}
[java] view plaincopy
String name = request.getParameter("name");
if(filmname==null){? System.out.println("name ==null");? }
else if (name.equals("")){? System.out.println("name.equals(\"\")");? }
控制臺輸出: name.equals("")
說明request從表單中標(biāo)簽中獲取默認(rèn)空的值!=null,而是空字符串艘策。
//==與EQUEAL得區(qū)別如下:
//如下面的代碼蹈胡,運行過后,返回為false;
public static void main(String[] ab){
String a = new String("123");
String b = new String("123");
System.out.println(a==b);
}
//這是因為==比較的是兩個引用時是不是指向同一個內(nèi)存地址,而equeals比較的是字面值审残。上面的new就產(chǎn)生了兩個不同的對象梭域,那么其內(nèi)存地址肯定也就不同了斑举。
public static void main(String[] ab){
String a = new String("123");
String b = new String("123");
System.out.println(a.equals(b));
}//返回為true