Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

인사이트

[JAVA] ArrayIndexOutOfBoundsException 본문

JAVA

[JAVA] ArrayIndexOutOfBoundsException

쿰쿵 2021. 6. 18. 09:05

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]에 값이 있는가?

없다.

그럼 출력해줄 수 있는가?

없다.

그래서 예외가 발생한 것이다.

시스템은 당신에게 "당신이 찾으려고 하는 값은 제 영역 밖인걸요?"라고 말하고 있는 것이다.