인사이트
[JAVA] ArrayIndexOutOfBoundsException 본문
ArrayIndexOutOfBoundsException
: 지금 당신이 찾으려고 하는 값은 제가 가지고 있는 배열의 범위를 벗어났습니다. 저는 찾아드릴 수 없어요.
오류메시지
: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at com.exception.ArrayIndexOutOfBoundsExceptinoExample.main(ArrayIndexOutOfBoundsExceptinoExample.java:10)
- "main스레드 실행 중에 ArrayIndexOutOfBounds예외가 발생했네요. index에는 값이 5개 밖에 없는데 그 범위를 넘겨셨네요. 오류가 난 위치는 10번째 라인이예요 가서 확인해보세요"라는 의미
뭐가 오류가 났나 확인해보자
public class ArrayIndexOutOfBoundsExceptionExample {
public static void main(String[] args) {
int[] intArr = {1, 2, 3, 4, 5};
System.out.println(intArr[0]); // 1
System.out.println(intArr[5]); // 예외발생(10번째 라인)
}
}
9번째 라인에 있는 intArr[0]은 잘 출력이 되었다.
왜일까?
배열은 index번호라는 게 있다.
보통 우리가 숫자를 셀 때는 1, 2, 3 이렇게 세지만
배열을 세려면 0, 1, 2 이런 식으로 세어야한다.
그럼 System.out.println(intArr[0])로 하려고 했던 건 무엇이었을까?
- intArr이 참조하고 있는 애 중에 0번째 위치(인덱스)에 있는 애를 좀 출력하고 싶은데요. 를 하고 싶었던 것이다.
그럼 그 값이 뭘까?
그렇다.
1이다.
왜?
인덱스는 0부터 세니까.
그럼 intArr[2]를 출력하면 뭐가 나올까?
2?
아니다.
3이다.
왜?
인덱스는 0부터 세니까.
그럼 이제 감이 좀 온 것 같다.
intArr[5]를 출력했을 때 왜 예외가 나왔을까?
intArr[5]에 값이 있는가?
없다.
그럼 출력해줄 수 있는가?
없다.
그래서 예외가 발생한 것이다.
시스템은 당신에게 "당신이 찾으려고 하는 값은 제 영역 밖인걸요?"라고 말하고 있는 것이다.
'JAVA' 카테고리의 다른 글
AVA] NullPointerException (0) | 2021.06.17 |
---|---|
[JAVA] 이름이 같은 클래스의 객체 생성 방법 (0) | 2021.06.05 |
[JAVA] 클래스의 구성요소 (0) | 2021.06.03 |
[JAVA] 향상된 for문 (0) | 2021.06.02 |
[JAVA] int배열 정렬 (오름차순, 내림차순) (0) | 2021.06.02 |