Page 19 -
P. 19
이 코드는 배열 항목들을 값 0.0으로 세팅 한다. 배열을 사용하는 코드를 작성할 때는 해당 배열이 1
선언되고, 생성되고, 초기화되었는지 항상 유의해야 한다. 한 가지라도 빠뜨리면 프로그램이 오류를
일으킬 수 있다. 기초 개념
디폴트 배열 초기화 선언 코드를 좀 더 간략히 만들기 위해 자바의 디폴트 배열 초기화 방식을 이용
할 수 있다. 그렇게 하면 배열 생성을 위한 3 단계 코드가 위 코드의 “축약된 방식”처럼 한 개의 구문
으로 축약될 수 있다. 부등호의 좌측은 배열 변수를 선언하고 우측은 배열 변수를 초기화한다. 이 경
우 double 타입의 디폴트 값이 자바에서는 0.0이기 때문에 “장황한 방식”에서의 for 루프를 사용하지
않아도 된다.
하지만 0 이 아닌 값으로 초기화하고 싶다면 명시적인 값 설정이 필요하다. 참고로 자바에서 숫자 타
입의 디폴트 값은 모두 0이다. boolean 타입의 경우 false가 디폴트 값이다.
초기화 선언 세 번째 방법은 컴파일 시점에 각 배열 항목의 값을 지정하는 것이다. 중괄호 { } 안에
지정할 값들을 쉼표로 분리하여 나열한다.
배열의 이용 32페이지에서는 전형적인 배열처리 코드를 보여준다. 배열을 선언, 생성한 다음에는 배
열의 이름 옆에 대괄호로 둘러싼 int 타입 항목 번호를 표기 함으로써 배열 안의 어떤 항목에든 접근
가능하다. 배열이 한번 생성되면 그 크기는 고정된다. 자바에서는 배열 a[]의 크기 값을 a.length를
통해 얻을 수 있다. 배열 a[]의 마지막 항목은 항상 a[a.length-1]이 된다. 자바는 배열 경계선을 자
동으로 검사해준다. 만약 크기 N 짜리 배열을 생성하고서 항목에 접근할 인덱스를 마이너스 값이나
N-1보다 큰 값을 지정하면 런타임에 ArrayIndexOutOfBoundsException이 발생하면 프로그램이 종료
되게 된다.
에일리어싱 배열의 이름은 배열 전체를 대표한다. 만약 배열 변수를 다른 배열 변수에 대입하면, 다
음의 예에서 보이듯이 두 변수 모두 같은 배열을 가리키게 된다.
int[] a = new int[N];
||.
a[i] = 1234;
||.
int[] b = a;
||.
b[i] = 5678; |/ a[i]도 이제 5678이 된다.
이러한 상황을 에일리어싱이라고 한다. 에일리어싱은 찾기 힘든 미묘한 버그를 유발할 수 있다. 만약
배열의 복제본을 만드는 것이 의도라면 새로운 배열을 선언, 생성, 초기화하고 그 배열에 원본 배열
의 값들을 복사해 넣어야 한다. 이 부분은 32페이지의 세 번째 코드 예제에서 보여주고 있다.
2차원 배열 자바의 2차원 배열은 1차원 배열을 항목으로 가지는 배열이다. 2차원 배열해서 하부 배
열들은 서로 다른 크기일 수도 있다. 하지만 이 책에서는 대부분의 경우 같은 크기의 하부 배열로
이루어진 2차원 배열을 다룬다. 즉 M개의 열과 N개의 행으로 된 배열로써 각 하부 배열의 크기가
031