• 締切済み

Java:arraycopyについて

問題集で次のプログラム(抜粋)について質問します。 char[] arrayA = {'a', 'b', 'c' , 'd', 'e' }; char[] arrayB= new char[arrayA.length]; System.arraycopy(arrayA, 1, arrayB, 0, 4); for( char c : arrayB){ System.out.print(c); } 結果として、bcdeが表示されるようですが、 arrayBのlengthは、arrayAのlengthと同じく5になっていると思います。 for文で代入される時に5つ目の要素としてnullが入ることは ないのでしょうか?

みんなの回答

  • HNEX
  • ベストアンサー率62% (43/69)
回答No.1

charはプリミティブ型なのでnullは入りません。 必ず実数が入っています。 char[] arrayB= new char[arrayA.length]; の時点では配列が確保されただけなので、5の長さの配列にすべて0(charとしての表現としては空)が入っています 視覚的にわかりやすくかけばこういう状態です { '', '', '' , '', '' } arraycopyを実行した事で0-3までのインデックスにはbcdeが詰められるので  { 'b', 'c', 'd' , 'e', '' } となります 0が入っていることの確認としては System.out.println((int) arrayB[4]); としてみると0が出力される事が確認できます

関連するQ&A

専門家に質問してみよう