#IndexOutOfBoundsExceptionの違いについて
ある種のインデックス (配列、文字列、ベクトルなど) が範囲外であることを示すためにスローされます。
List, ArrayListなどに対して、不正なインデックスを使ってアクセスした時に発生する例外
##※ArrayListの特徴
初期化
import java.util.ArrayList; //パッケージのインポートが必要
import java.util.List;
ArrayList <参照型> list名 = new ArrayList<>();
List <参照型> list名 = new ArrayList<>();
//ArrayListが実装しているList型のインターフェースで宣言することも可能
- オブジェクトであればどのような型でも扱える。型の混在も可能
- 必要に応じて要素数を自動的に増やす(可変長)
- 追加した順で並ぶ
- nullも値として追加できる
- 重複を許す
- スレッドセーフではない。読み出し中に要素を変更すると例外(ConcurrentModificationException)が発生する
#ArrayIndexOutOfBoundsExceptionとは
ArrayIndexOutOfBoundsException
IndexOutOfBoundsExceptionのサブクラス。
不正なインデックスを使って配列がアクセスされたことを示すためにスローされます。つまり、インデックスが負または、配列のサイズ以上の場合です。
配列に対して、不正なインデックスを使ってアクセスした時に発生する例外
##※配列の特徴
・初期化
int a = new int[3]; //要素数3の配列としてメモリを確保
int b [] = {1,2}; //newを使わず初期化子だけで初期化できる
int[]c = new int []{1,2}; //newと初期化子、両方使うなら[]の中は空
int[] d;
d = new int[]{2,3};
- 同じ型、もしくは互換性のある型しか扱えない
- 扱う要素数を最初に決める必要がある
- 要素アクセスには添字を使わなければならない
- 要素アクセスの際は要素数を超えないようにする必要がある
##ポイント
ArrayList, Listは配列ではない!
##参考サイト
【Java】ArrayIndexOutOfBoundsExceptionとIndexOutOfBoundsExceptionの違いについて