7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IndexOutOfBoundsExceptionとArrayIndexOutOfBoundsExceptionの違いについて

Posted at

#IndexOutOfBoundsExceptionの違いについて

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の違いについて

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?