2017-12-05 8 views
-3

javaの配列のサイズを変更できますか?私は混乱しています。すべてが配列について知っています:配列のサイズを変更することはできません。Javaの配列のサイズを変更できます

このコードを書いた後、私は混乱しています。

class Test { 
    public static void main(String[] args) { 
     int[] array = {1,2,3,4,5,6,7,8,9,10,11}; 
     int[] array1 = {1,1}; 

     System.out.println("befor : " + array1.length); //I get 2 
     array1 = array; 
     System.out.println("intialize : "+array1.length); //I get 11 

     for(int a : array1) { 
      System.out.println(a); 
     } 

     System.out.println("after : " + array1.length); 
    } 
} 

我々は、配列のサイズを変更することができない場合、我々は、ランタイムを取得することになっている:

array1 = array; 

では、ArrayIndexOutOfBoundsExceptionエラーをしかし、私はのような出力を得た:

befor : 26 
intialize : 11 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
after : 11 
+3

これは配列のサイズを変更していません。参照に別の値を割り当てるだけです。これは、あなたの電話に保存されているあなたの友人の電話番号を変更するようなものです。実際に*あなたの友人の番号を変更するのではなく、別の電話を呼び出すだけです。 –

+0

あなたは配列を移動していませんでした。あなたは参照を変更しました。 'array1'は' array'の以前に割り当てられた配列を参照します。 –

+0

'array1 = array;'これは 'array1'を' array'を参照するように割り当てます。つまり、彼らは両方とも同じ**配列を指しています。あなたはサイズなどを変更していません。 – displayname

答えて

0

Array1:

インデックス - >値

0->

1-> B

2-> C

3-> D

4-> E

アレイ1サイズ= 5

アレイ2:

Index->​​値

0-> X

の1-> Y

アレイ2サイズ= 2

我々は不変性について話すとき、あなたは背後にある考え方を明確にする必要があります配列で。

Array1 = Array2?

'='は代入演算子です。つまり、上記の行を書くと、array1全体を置換することになります。この行の後にArray1が何を持っていたかの参照はありません。

"配列のサイズを変更できない場合は、Runtime:ArrayIndexOutOfBoundsExceptionエラーが発生するはずです。":Array1に新しい値を割り当てたので、これは得られません。

Array1は、出生時に5つの値で構成されていたことを今でも覚えていません。

関連する問題