2011-11-12 46 views
-4
  1. 有什麼區別:String a[]List<String> a
  2. String a[]是否正確?或者用於定義字符串數組,我們應該始終使用String[] a
  3. 當我們聲明String[] a時,我們是否需要始終初始化它?

假設我做到這一點:關於Java中字符串的一些懷疑

String[] a = new String[5]; 
a[2] = "Hello"; 
a[3] = "World"; 
a[2] = "Good Bye"; 

由於陣列被連續存儲在存儲器中並且當我修改創建新的字符串的字符串對象。所有這些字符串如何在Java中針對上述所有語句進行存儲和修改?

+1

這是一個非常基本的java stater問題。谷歌搜索會給你答案。 –

回答

2
  1. String a[]是一個本地Java數組String s。 List a是原始(無類型)List(請參閱The Java Collections)。您可能需要通用版本:List<String> a。這裏列出的差異太多了;你應該遵循這個鏈接!
  2. String a[]String[] a是等同的。但是,String[] a是公約。
  3. String[] a實際上是一個參考。如果它是一個非局部變量,如果你沒有明確地初始化它,它將被隱式地初始化爲null。你通常會想要做一些像String[] a = new String[10];
  4. 該陣列的每個元素是對String的引用;基礎數據本身不存儲在數組中。
+0

其餘的問題呢?另外,對於第一個問題,字符串數組連續存儲在內存中,而列表中的字符串可能不一定連續存儲。它是否正確? –

+0

@Tarun Kumar:不,這不正確。連續存儲在Java String數組中的內容是*引用*字符串對象,它們本身可以遍佈整個堆。顧名思義,最常見的List實現ArrayList也是如此,它是基於數組的。 –

+0

所以,你的意思是甚至在Java商店中引用實際字符串數據的列表,這些引用可能不一定在內存中是連續的? –