2012-06-28 17 views
0

我需要知道在使用運行時初始化Java中的字符串的區別。在java中使用字符串初始化的運行時差異是什麼?

對於〔實施例:

String declare = null; 

否則:

String declare = ""; 

我宣佈兩個字符串類型的聲明。哪一個最適合運行時聲明。

+1

這取決於你將要用它做什麼。 – nullpotent

+0

你能詳細解釋一下嗎 –

+0

取決於'null'和''''是否與使用的代碼相同或不同。 – hmjd

回答

3

字符串是一個對象。如果將它初始化爲null,那麼您告訴編譯器,您知道這是未初始化的,並且在第一次嘗試使用該變量時應該沒有警告。除此之外,當然,您正在指向對null的引用。

如果初始化字符串爲空字符串,但是,發生以下情況:

  • 現在有一個String對象分配
  • 編譯器會把字符串常量字符串池中
  • 任何您初始化其他字符串爲「」將指向同一inmutable字符串從池

所以,問題是,你如何處理空值或空字符串在C頌?這是什麼應該指導你的決定

+0

現在我在我的代碼中詢問名爲'declare'的字符串refrence是否佔用內存。這是我的主要疑問。 –

+0

感謝您的回覆 –

+0

兩者都耗盡了指針的空間。第二種方法還需要字符串「空間」一次(和重用它爲每一個未來的宣言) – Miquel

0

在第一種情況下,你已經創建了一個'指針'對象(對象未被創建)null。第二個 - 指向具有值「」(空字符串)的對象的「指針」。這些是qiute不同的東西 - 你需要決定,你需要哪一個進一步操作。

+0

我有疑問可以聲明兩者。哪一個佔用內存,哪個不佔用內存。這是我的主要問題。 –

0

第一個例子不會創建一個String對象,第二個例子會。所以,以下語句:

declare.equals("some string"); 

會爲你的第一個例子NullPointerException異常,而不是第二。

0

正如@AljoshaBre所評論的,這取決於你將如何處理它。將它初始化爲空有點多餘,因爲初始值通常是這樣。空白初始化(「」)使得如果你通過一個意外的路徑(可能是好還是壞,因爲它可能會掩蓋你的代碼邏輯錯誤)不可能收到一個空指針異常。

具有初始值通常是不錯的,但讓這個它是有意義的是要使用你的字符串,而不是隨機初始值的代碼。

+0

感謝您的回覆 –

相關問題