equals()和==null的用法區別


str == null          //判斷引用是否指向任何對象
str.length == 0  //判斷引用指向的對象是否為空字符串,即字符串長度為0
“”.equals(str)    //判斷引用指向的對象是否為空字符串和str.length()==0效果是一樣的。

在C/C++里, str其實是一個指針, null表示空指針, str==null表示該字符串指針沒有指向任何一個字符串.  ""表示是空字符串, 空字符串也是字符串, 也在內存中占有位置, str.equals("")表示這個str指向了一個字符串, 且該字符串的內容是一個空字符串.  

可以通過打印str的內存地址就可以看出null和""是不同的;

java也是類似的.

而且在C/C++中, 如果不先判斷str不為空就直接使用str的方法, 是會出錯的, 因為str還沒有被初始化為String類的實例;

 


但str是null時,str.equals(“”)和str.length==0將拋java.lang.NullPointerException異常。

                     因為equals是對象的方法

所以最好使用    “”.equals(str)形式
“”.equals(null)   //false

 

str==null || str.length()==0 兩個一起寫可以避免str=null時,拋異常。

但最好還是寫成:

                       str != null && !”“.equals(str) 
                       str ==null  ||   “”.equals(str)


免責聲明!

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



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