TIL - 20250624

juni·2025년 6월 24일

TIL

목록 보기
46/315

📘 Java 배열 기초 학습 정리 (0624)

✅ 배열 복사

▶ 얕은 복사 (주소 복사)

String[] petsCopy = pets;

▶ 깊은 복사 (내용 복사)

String[] petsCopy = new String[pets.length];
for (int i = 0; i < pets.length; i++) {
    petsCopy[i] = pets[i];
}

▶ Arrays.copyOf 사용

String[] petsCopy = Arrays.copyOf(pets, pets.length);

✅ 배열 요소 추가

  • 새로운 배열을 생성해서 기존 배열 복사 후 마지막 인덱스에 요소 삽입
int[] temp = new int[arr.length + 1];
System.arraycopy(arr, 0, temp, 0, arr.length);
temp[temp.length - 1] = newElement;
arr = temp;
  • push 메서드 활용 예시로 배열에 여러 요소 추가

✅ 배열 요소 삭제

  • 맨 마지막 요소 삭제 (pop)
int delTarget = arr[arr.length - 1];
int[] temp = new int[arr.length - 1];
for (int i = 0; i < temp.length; i++) temp[i] = arr[i];
arr = temp;
  • 원하는 위치 요소 삭제
for (int i = idx; i < arr.length - 1; i++) {
    arr[i] = arr[i + 1];
}
arr = Arrays.copyOf(arr, arr.length - 1);

✅ 배열 요소 삽입

  • 특정 인덱스에 새 데이터를 삽입
int[] temp = new int[arr.length + 1];
for (int i = 0; i < idx; i++) temp[i] = arr[i];
for (int i = arr.length; i > idx; i--) temp[i] = arr[i - 1];
temp[idx] = newData;
arr = temp;

✅ 배열 탐색

  • 선형 탐색: 하나씩 순차적으로 비교
for (int i = 0; i < arr.length; i++) {
    if (arr[i].equals(target)) { ... }
}

✅ 2차원 배열

  • 배열의 배열 형태
int[][] matrix = {
    {10, 20, 30},
    {40, 50, 60}
};
  • 순회 방법 (for-each / 이중 for문)
for (int[] row : matrix) {
    for (int col : row) System.out.print(col + " ");
}
  • Arrays.deepToString() 으로 출력

✅ 배열 실습 퀴즈

▶ 음식명 입력받아 배열에 저장

  • 배열 크기 증가 → 새 배열 생성 → 기존 값 복사 → 입력 값 추가

▶ 이름 변경 프로그램

  • 이름 탐색 후 변경

▶ 이름 삭제 프로그램

  • 이름 탐색 → 삭제 → 배열 크기 감소

총정리

  • 자바는 배열이 고정 크기이므로 동적 배열 구현 시 복사 과정이 필수
  • 삽입, 삭제, 복사는 모두 새 배열을 생성하고 값을 옮기는 방식
  • 배열 기반 자료구조에 대한 기본적인 이해와 연습을 진행

0개의 댓글