728x90
반응형
1. 배열이란?
- 같은 타입의 데이터를 연속적으로 저장하는 자료구조
- 크기 고정: 한 번 크기를 정하면 변경 불가
- 인덱스는 0부터 시작
- 기본형(int, double 등), 참조형(String, 객체 등) 모두 배열로 만들 수 있음
2. 배열 선언 & 생성
| 선언만 | int[] arr; | 배열 이름만 선언 |
| 선언 + 생성 | int[] arr = new int[5]; | 길이 5, 기본값 0 |
| 선언 + 초기화 | int[] arr = {1, 2, 3}; | 초기값 지정 |
| 객체 배열 생성 | Person[] people = new Person[3]; | 객체 3개 공간 생성 (null로 채워짐) |
🔹 new int[5]: [0, 0, 0, 0, 0]
🔹 new Person[3]: [null, null, null]
3. 배열 초기화 방식 비교 (new Type[] 생략 여부 포함)
| 선언과 동시에 초기화 | int[] a = {1, 2, 3}; |
| 선언 후 나중에 대입 | a = new int[] {1, 2, 3}; |
| 함수 인자 | sum(new int[] {1, 2}) |
| return 문 | return new int[] {1, 2}; |
| 빈 배열 | new int[] {} |
| 객체 배열 한 줄 초기화 | Person[] p = { new Person("A", 1) }; |
선언과 동시에 초기화할 때만 {} 생략 가능
함수 인자, 리턴값, 나중 할당에서는 new Type[] 명시 필수
4. 배열 길이와 반복
int[] nums = {10, 20, 30};
System.out.println(nums.length); // 3
// 기본 for문
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
// 향상된 for문 (for-each)
for (int n : nums) {
System.out.println(n);
}
5. 문자열 배열
String[] names = {"철수", "영희", "민수"};
for (String name : names) {
System.out.println(name);
}
6. 객체 배열
public class ClassRoom {
private Person[] students;
public ClassRoom() {
students = new Person[] {
new Person("철수", "ISTJ", false, true),
new Person("영희", "ENFP", true, false)
};
}
public Person[] getStudents() {
return students;
}
}
또는 new Person[] { ... } 형식도 사용 가능
7. 다차원 배열 (2차원 등)
int[][] matrix = {
{1, 2},
{3, 4}
};
System.out.println(matrix[1][0]); // 3
8. 배열 복사
얕은 복사 (참조만 복사됨)
int[] a = {1, 2};
int[] b = a;
b[0] = 99;
System.out.println(a[0]); // 99
깊은 복사 (값 복사)
int[] a = {1, 2};
int[] b = Arrays.copyOf(a, a.length);
9. 배열 유틸리티 (java.util.Arrays)
import java.util.Arrays;
int[] arr = {3, 1, 2};
Arrays.sort(arr); // 정렬
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
10. 배열을 함수에 전달
void printAll(int[] arr) {
for (int n : arr) {
System.out.println(n);
}
}
printAll(new int[] {1, 2, 3}); // OK728x90
반응형
'이론 > Java' 카테고리의 다른 글
| Java Singleton 패턴 (0) | 2025.07.06 |
|---|---|
| Java static (0) | 2025.07.06 |
| Java 형변환 (0) | 2025.07.06 |
| OOP) 변수 (Instance, Parameter, Local, Global) (0) | 2024.01.02 |
| OOP) 클래스와 객체 (0) | 2024.01.02 |