본문 바로가기

이론/Java

Java 배열

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}); // OK
728x90
반응형

'이론 > 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