홈 › 초급 › 03 / 8

1차원 · 2차원 배열

섹션 7진행 0 / 8

5. 자주 하는 실수 (Tip)

❌ 실수 1: length에 괄호, 또는 <=

java
for (int i = 0; i <= arr.length(); i++)   // length()는 컴파일 오류, <=는 범위 초과

✅ for (int i = 0; i < arr.length; i++)

❌ 실수 2: 배열을 println으로 직접 출력

java
int[] a = {1, 2, 3};
System.out.println(a);          // [I@7a81197d

✅ System.out.println(Arrays.toString(a)); 2차원은 Arrays.deepToString.

❌ 실수 3: 참조 타입 배열의 칸이 null인 채로 사용

java
String[] names = new String[3];
names[0].toUpperCase();         // NullPointerException

new String[3]은 null 3칸입니다.

✅ 먼저 값을 넣습니다: names[0] = "kim"; 또는 Arrays.fill(names, "").

❌ 실수 4: 대입으로 복사했다고 착각

java
int[] backup = data;       // 복사 아님
Arrays.sort(data);         // backup도 정렬됨 (같은 배열)

✅ int[] backup = data.clone();

❌ 실수 5: 2차원 배열을 clone 한 번으로 복사

java
int[][] copy = grid.clone();
copy[0][0] = 1;            // grid[0][0]도 1

✅ 행마다 clone (2.8 참조).

❌ 실수 6: 정렬하지 않고 binarySearch

java
int[] a = {5, 1, 4};
Arrays.binarySearch(a, 4);    // 결과 무의미 (음수나 엉뚱한 인덱스)

✅ Arrays.sort(a); 후 검색. 정렬이 싫으면 선형 탐색(for문).

❌ 실수 7: 배열 크기를 초과해 추가하려 함

java
int[] queue = new int[3];
int size = 0;
queue[size++] = 1; queue[size++] = 2; queue[size++] = 3;
queue[size++] = 4;            // ArrayIndexOutOfBoundsException

배열은 늘어나지 않습니다.

✅ Arrays.copyOf(queue, queue.length * 2)로 확장하거나, 처음부터 ArrayList를 씁니다.