2012-11-09 15 views
5

は私が書くとき、この配列はJavaでいつ初期化されますか?

String[] fruits = {"Apple", "Pear"}; 

私はそれがCのようなコード、それは正しいですために起こるように、コンパイル時に、配列や文字列は、作成されることを期待しますか?配列とその内容はコンパイル時または実行時に作成されますか?

答えて

8

アレイwhich are objects in Javaが作成されます。これは実行時にのみ発生します。

多くのオブジェクトはJavaプログラムで作成され、オブジェクトの作成はVM自体の初期化後に行われることに注意してください。 1つの静的配列初期化は、あなたの演奏に目立つ負担をかけることはありません。

あなたは、配列を変更しないと、あなたは多くのインスタンスを持っている場合は、静的に宣言してください:

static String[] fruits = {"Apple", "Pear"}; 

注意をも静的にコンパイル配列にすることができるものとの重要な相違点:Java配列変更可能です。長さを変更することはできませんが、要素を変更する(または無効にする)ことができます。 Java配列は、最終的な静的であっても、実際には定数ではありません。

5

配列はjavaの特殊なオブジェクトです。したがって、実行時に作成されます。 Javaプログラミング言語でJava Language Specification

1として、アレイは、オブジェクト(§4.3.1)、動的に作成され、Object型の変数に割り当てることができる(§4.3.2)

あります

JLS 15.10は、配列作成式の詳細を提供します。

関連する問題