1차원 · 2차원 배열
5. 자주 하는 실수 (Tip)
❌ 실수 1: length에 괄호, 또는 <=
for (int i = 0; i <= arr.length(); i++) // length()는 컴파일 오류, <=는 범위 초과✅ for (int i = 0; i < arr.length; i++)
❌ 실수 2: 배열을 println으로 직접 출력
int[] a = {1, 2, 3};
System.out.println(a); // [I@7a81197d✅ System.out.println(Arrays.toString(a)); 2차원은 Arrays.deepToString.
❌ 실수 3: 참조 타입 배열의 칸이 null인 채로 사용
String[] names = new String[3];
names[0].toUpperCase(); // NullPointerExceptionnew String[3]은 null 3칸입니다.
✅ 먼저 값을 넣습니다: names[0] = "kim"; 또는 Arrays.fill(names, "").
❌ 실수 4: 대입으로 복사했다고 착각
int[] backup = data; // 복사 아님
Arrays.sort(data); // backup도 정렬됨 (같은 배열)✅ int[] backup = data.clone();
❌ 실수 5: 2차원 배열을 clone 한 번으로 복사
int[][] copy = grid.clone();
copy[0][0] = 1; // grid[0][0]도 1✅ 행마다 clone (2.8 참조).
❌ 실수 6: 정렬하지 않고 binarySearch
int[] a = {5, 1, 4};
Arrays.binarySearch(a, 4); // 결과 무의미 (음수나 엉뚱한 인덱스)✅ Arrays.sort(a); 후 검색. 정렬이 싫으면 선형 탐색(for문).
❌ 실수 7: 배열 크기를 초과해 추가하려 함
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를 씁니다.