java Null 字元串與null區別

來源:互聯網
上載者:User

原文地址 http://liucun.iteye.com/blog/801691

" "分配了記憶體 ;null沒有 
調用null的字串的方法會拋null 指標異常。 
""是一個字串(String).它在記憶體中是存在的.它可以使用Object對象中的方法(如"".toString();"".equals()) 
而null它是一個Null 物件.在記憶體中是不存在的.它不可以使用Object對象中的方法 
""占記憶體.. 在記憶體中會分配一個空間. 
null不佔記憶體. 為空白引用. 
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){//如果str1沒有值,則.... 
//。。。。 

正確的寫法是 if(str1==null||str1.equals("")){ //先判斷是不是對象,如果是,再判斷是不是Null 字元串 
//... 




補充: 

Java裡面,類的對象都是用控制代碼來訪問的,就像C裡面的指標。 
而在Java裡面有兩個比較相等的方法一個是用“==”,另一個是String 裡面的equals()方法,兩個的區別是,前者比較的是地址,後者比較的 是內容。 

例如你寫了這樣的一個語句 
String str1,str2; 
那就是定義了兩個指向不同String執行個體的控制代碼,現在他們都是指向null 的所以str1==str2==null,此時你不能用length()方法,因為,他們 都沒有指向具體的對象,如果調用這個方法的話,會返回一個 NullPointerException。 之後,如果你寫了這樣的語句 str1=new
String(); 那麼str1將指向一個具體的String執行個體,所以str1!=str2,str1!=null, 而且更重要的是str1!="",因為""與str1所指的是兩個不同的地址。 但方法str1.length()的傳回值就是0了,也就是字串為空白。 同樣即使你再這樣寫 
str2=new String(); 這個時候依然是str1!=str2,因為他們指向的是兩個不同的地址, 但如果你用str1.equals(str2)的話,傳回值就是true,因為他們的內 容相同,都為空白。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.