string str1 =
null
; str引用為空
string str2 = ""
; str引用為空串
直接點就是null
沒有分配記憶體空間,而
""分配了記憶體空間,因此str1還不是乙個例項化的物件,而str2已經例項化。
注意因為null
不是物件,
""是物件。所以比較的時候必須是
if(str1==
null
)和if
(str2.equals(
""))
記憶體位址比較用equals,null
用等號比較。
因此,如果str1=null
;下面的寫法錯誤:
if(str1.equals(
"")||str1==
null
)
正確的寫法是 if
(str1==
null
||str1.equals(
""))
//==與equeal得區別如下:
//如下面的**,執行過後,返回為false;
public
static
void
main(string ab)
//這是因為==比較的是兩個引用時是不是指向同乙個記憶體位址,而equeals比較的是字面值。上面的new就產生了兩個不同的物件,那麼其記憶體位址肯定也就不同了。
public
static
void
main(string ab)//返回為true
null和 以及 與equals的區別
string str1 null str引用為空 string str2 str引用為空串 直接點就是null沒有分配記憶體空間,而 分配了記憶體空間,因此str1還不是乙個例項化的物件,而str2已經例項化。注意因為null不是物件,是物件。所以比較的時候必須是 if str1 null 和if ...
null和 以及 與equals的區別
string型別與null比較用 string型別與空字串 比較用equals string str1 null str引用為空 string str2 str引用為空串 1.直接點就是null沒有分配記憶體空間,而 分配了記憶體空間,因此str1還不是乙個例項化的物件,而str2已經例項化。2.注...
null 與 equals判斷順序引起的頭疼事
寫了乙個方法,擷取字串的長度 public static string parseimagepath string path else return imagepath 標紅色 有問題。如果path null,那麼這個判斷就不起作用了,會報錯 剛開始,怎麼也想不通,已經在控制台上輸出了path nu...