2017-01-29 2 views
1

私はC++のバックグラウンドから来ており、私はちょうどjavaを学び始めました。私はそれがオブジェクトであり、ヒープに格納されていても、コンパイルする前に配列のサイズを指定する必要があるのはなぜ分かりませんか?オブジェクトがヒープに格納されている場合、JavaでArrayのサイズを指定する理由は何ですか?

概念を明確にするのに役立つ例があれば歓迎します。

+2

サイズは必ずしも指定する必要はありません。 'int [] nums = new int [] {1、2、3};' – Logan

+0

あなたが何を正確に求めているのかは不明です。 C++でヒープ上に配列を作成する場合は、配列のサイズも指定する必要があります。その点でC++とJavaの間に違いはありません。たぶん少しのコードによって、あなたが求めているものが明確になります。 –

+1

@LoganKulinskiそれはサイズ3の配列を指定しています。 –

答えて

0

あなたは、配列

int[] ia = new int[0]; 

を作成する場合、それはあなたが値を追加しようとした場合、あなたは境界例外のうちを取得するので、大きさは、後から変更することはできませんです。これはあなたのプログラムのために動作しない場合はひどいこのコードは動作するはずですしばらくして、あなたは定義されたサイズを持っていないオブジェクトでのArrayListを使用する必要があります。

ArrayList<Integer> al = new ArrayList<Integer>(); 
for(int q = 0; q < 10000; q++){ //Infinitely add ints to the ArrayList 
    int i = 1; 
    al.add((Integer) i); 
} 
+0

解決済み、最初に@VGRをテストしなかった – Peake

0

私は理由を理解することはできませんよ&hellipをコンパイルする前に配列のサイズを指定する必要があります。

コンパイルする前にサイズを指定する必要はありません。たとえば、次のコードは、ユーザーが実行時にサイズを提供することができます:あなたは、簡単にサイズを変更する配列のようなオブジェクトを希望した場合

final Scanner input = new Scanner(System.in); 
System.out.print("Array size: "); 
final int[] array = new int[input.nextInt()]; 
System.out.printf("The array size is %d.\n", array.length); 

ArrayListsは非常にいいです。

関連する問題