2011-11-12 1 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"; 

配列がメモリに連続して格納し、iが新しい文字列オブジェクトが作成された文字列を変更しているので。どのようにこれらの文字列はすべて上記のステートメントのためにJavaで保存され、変更されていますか?

+1

これは非常に基本的なJavaステーターの質問です。 googleの検索はあなたに答えを与えていたでしょう。 –

答えて

2
  1. String a[]は、StringのネイティブJava配列です。 List aは生の(型なし)ListThe Java Collections参照)です。ジェネリック化されたバージョン:List<String> aが必要です。ここにはあまりにも多くの違いがあります。あなたはそのリンクに従ってください!
  2. String a[]およびString[] aは同等である。しかし、String[] aは大会です。
  3. String[] aは実際には参考情報です。非ローカル変数の場合、明示的に初期化しないと暗黙的にnullに初期化されます。あなたは普通、String[] a = new String[10];のようなことをしたいと思うでしょう。
  4. アレイの各要素はStringへの参照です。基になるデータ自体は配列に格納されません。
+0

残りの質問はどうですか?また、最初の質問では、String配列はメモリ内に連続して格納されますが、リスト内のStringは必ずしも連続して格納されているとは限りません。これは正しいです? –

+0

@タルンクマー:いいえ、それは正しくありません。 Java String配列に連続して格納されるものは、* references *文字列オブジェクトです。これらのオブジェクトは、ヒープ全体に広がっています。そして、同じことが、最も一般的なList実装のArrayListにも当てはまります。これは、配列に基づいており、名前が示すとおりです。 –

+0

Javaストアのリストでさえ、実際のStringデータを参照していて、これらの参照が必ずしもメモリ内で連続しているとは限りません。 –

関連する問題