실시간 강의와 온라인 강의를 기반으로 요약했습니다.
배열 특징
- 크기 변경 x → 크기 변경 시 새로 만들거나 기존 내용 복사
- 보안상 이유 (다른 메모리영역 침범 = overrun)로 크기 변경 불가
- 모두 같은 타입 (같은 사이즈)
2차원 배열의 주소
- 2차원 배열 전체 주소는 연속적인 것이 아님
- 1차원 배열 내부는 연속된 주소, 1차원 배열끼리는 연속된 주소 x
int[][] arr = new int[2][5];
배열 선언
int[] a; 🟢
int a[]; 🟡
배열 생성 및 초기화
int[] a;
a = new int[5];
int[] b = new int[5];
int[] c = {1, 2, 3, 4, 5};
int[] d = new int[]{1, 2, 3, 4, 5};
int[] e;
int e = new int[]{1, 2, 3, 4, 5};
int[] f;
int f = {1, 2, 3, 4, 5};
배열 요소 출력
import java.util.Arrays;
int[] a = {1, 2, 3, 4, 5);
System.out.println(Arrays.toString(a));
>> [1, 2, 3, 4, 5]
for(int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
>> 12345
for (int num : a) {
System.out.print(num);
}
>> 12345
int i = 0;
while (i < a.length) {
System.out.print(a[i]);
i++;
}
>> 12345
int i = 0;
do {
System.out.print(a[i]);
i++;
} while (i < a.length);
>> 12345
import java.util.Arrays;
Arrays.stream(a).forEach(System.out::print);
>> 12345
import java.util.stream.IntStream;
IntStream.range(0, a.length)
.forEach(i -> System.out.print(a[i]));
>> 12345
✅ 요약 비교
| 방법 | 인덱스 사용 | 가독성 | 특징 |
|---|
| Arrays.toString | ❌ 불가 | ✅ 높음 | 다차원은 Arrays.deepToString 사용 |
| 기본 for문 | ✅ 가능 | 보통 | 가장 유연함 |
| 향상된 for | ❌ 불가 | ✅ 높음 | 간단한 반복에 최적 |
| while문 | ✅ 가능 | 보통 | 조건이 외부적일 때 |
| do-while문 | ✅ 가능 | 낮음 | 무조건 1회 실행 |
| Stream API | ❌ (기본) | ✅ 선언형 | filter, map 등 조합 가능 병렬 사용 가능 |
Arrays 클래스
toString() / deepToString()
equals() / deepEquals()
int[] arr = {1, 2, 3, 4};
Arrays.eqauls(arr1, arr1);
int[][] arr2D = {{11, 12}, {21, 22}};
Arrays.deepEquals(arr2D, arr2D);
copyOf(), copyOfRange()
int[] original = {1, 2, 3, 4, 5};
int[] copied = Arrays.copyOf(original, 3);
System.out.println(Arrays.toString(copied));
Arrays.copyOf(original, 7);
System.out.println(Arrays.toString(copied));
Arrays.copyOfRange(original, 3, 7);
sort()
int[] arr = { 3, 1, 0, 2, 4 };
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
유틸 메소드
System.arraycopy()