JAVA中String = null 與 String = "" 的區別


JAVA中String = null 與 String = ""的區別

筆者今天在Debug的時候發現的NPE(NullPointerException),辛辛苦苦地調試了半天,終於看出了究竟

源頭就是出在了對String為null的調用上,這時會拋出NullPointerException

首先,筆者在前面的博客中提到了對字符串進行比較的方法。傳送門,通過先閱讀這篇文章,可能對以后的理解更有幫助。


下面介紹幾個比較常見的錯誤寫法

if(str == "")
{
	//
}

因為==操作在對String這種引用數據類型來說,比較的是地址,兩者的地址不同,所以這種寫法的if語句永遠不會被執行。

if(str.equal(""))
{
	//
}

這種寫法也有可能出錯,如果當str=null時,對它進行調用就會拋出NullPointerException異常。

所以正確的寫法如下:

if(str!=null&&str.equal("something")
{
	//
}

或者

if(!"something".equal(str))
{
	//這種寫法,如果你沒有給str賦初值,編輯器會提示你
	//如果str==null,那么這個if會被執行
}

這兩種寫法親測實用,並且更安全。


說完了一些例子,下面讓我來說一下他們的真正的區別吧

String str1 = null;		//str1引用為空,它沒有地址,它是一個沒有被實例化的對象

String str2 = "";		//str引用為空字符串,它有地址,它是被實例化的對象,值為空而已。

總結來說

所以說對str1進行比較時要用==操作,如果使用str1.equal()則會拋出NullPointerException

對str2進行比較時要用str2.equal(),如果使用str2=="你想要比較的字符串",這個boolean值永為false

update by 2017/3/30 19:42

by 一枝豬


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM