자바에서는 자바가상머신(JVM)이 모든 배열의 길이를 별도로 관리하며, '배열이름.length'
를 통해 배열 길이에 대한 정보 얻음
int[] arr = new int[5]; //길이가 5인 int배열
int tmp = arr.length; //arr.length의 값은 5, tmp에 5가 저장됨
배열은 한번 생성하면 길이를 변경할 수 없기 때문에, 이미 생성된 배열의 길이는 변하지 않음
'배열이름.length'
는 상수이며, 값을 읽을 수만 있을 뿐 변경불가
int[] score = new int[6];
for(int i=0; i<6; i++)
System.out.println(score[i]);
*위 코드는 배열의 각 요소를 for문을 이용해서 출력, 배열score의 길이는 6, 인덱스 범위는 0~5임
아래와 같이 코드를 변경하여 배열의 길이를 줄이면 인덱스 유효범위는 0~4가 됨
int[] score = new int[5]; //배열의 길이를 6에서 5로 변경
for(int i=0; i<6; i++) //실수로 조건식을 변경하지 않음
System.out.println(score[i]); //에러발생!!
ArrayIndexOutOfBoundsException
이라는 예외(배열의 index가 유효한 범위를 벗어났다는 에러)가 발생하여 비정상적으로 종료될 것'배열이름.length'
를 사용하는 것이 편리int[]score = new int[5]; //배열의 길이를 6에서 5로 변경
for(int i=0; i<score.length; i++) //조건식을 변경하지 않아도 됨
System.out.println(score[i]);
*'배열이름.length'는 배열의 길이가 변경되면 자동적으로 변경된 배열의 길이를 값으로 갖기 때문에,
배열과 함께 사용되는 for문의 조건식을 일일이 변경하지 않아도 됨
배열은 생성과 동시에 자동적으로 기본값(0)으로 초기화되므로 배열을 사용하기 전에 따로 초기화 해주지 않아도 됨
하지만, 원하는 값을 저장하려면 각 요소마다 값을 지정해줘야함
int[] score = new int[5] //길이가 5인 int형 배열을 생성
score[0] = 50; //각 요소에 직접 값을 저장
score[0] = 60;
score[0] = 70;
score[0] = 80;
score[0] = 90;
* 배열의 길이가 큰 경우 요소 하나하나에 값을 지정하기 보다 for문을 사용하는 것이 좋음
int[] score = new int[5]; //길이가 5인 int형 배열을 생성
for(int i=0; i<score.length; i++)
score[i] = i * 10 + 50;
for문으로 배열을 초기화하려면, 저장하려는 값에 일정한 규칙이 있어야만 가능
따라서 자바에서 다음과 같이 배열을 간단히 초기화 할 수 있는 방법 제공
int[] score = new int[]{50, 60, 70, 80, 90}; //배열의 생성과 초기화를 동시에 함
저장할 값들을 중괄호{}안에 쉼표로 구분해서 나열
중괄호{}안의 값의 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 대괄호[]안에 배열의 길이는 안적어도 됨
int[] score = new int[]{50, 60, 70, 80, 90};
int[] score = {50, 60, 70, 80, 90}; //new int[] 생략가능
'new 타입[]'
을 생략하여 코드를 더 간단히 할 수도 있음
다만, 배열의 선언과 생성을 따로 하는 경우에는 생략불가
int[] score;
score = {50, 60, 70, 80, 90}; //에러.new int[]생략 불가
score = new int[]{50, 60, 70, 80, 90} //OK.