배열의 얕은 복사와 깊은 복사
import java.util.Scanner;
public class ArrayCopy {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] origin = {1, 2, 3, 4, 5};
System.out.println("-----원본출력-----");
for (int n : origin) {
System.out.print(n + " ");
}
//origin을 copy에 단순대입해서 copy배열 생성
int[] copy = origin; //얕은 복사
copy[2] = 99;
System.out.println("\n복사본 값 변경");
System.out.println("-----원본출력-----");
for (int n : origin) {
System.out.print(n + " ");
}
System.out.println();
}
}
copy배열의 값을 수정해도 원본의 값이 변경됨.
origin과 copy는 참조변수이고, 같은 메모리를 참조하고 있기 때문
얕은 복사 : 주소값 복사
import java.util.Scanner;
public class ArrayCopy {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//깊은 복사 방법
/*
* 1. for문을 활용
* 새로운 배열을 만들어서 반복문을 통해 원본 배열의 각 요소를 복사함.
* 완벽한 깊은 복사 : 서로 독립적인 배열 생성
* */
int[] origin2 = {1, 2, 3, 4, 5};
int[] copy2 = new int [origin2.length];
for (int i=0; i<copy2.length; i++) {
copy2[i] = origin2[i];
}
System.out.println();
System.out.println("-----원본2출력-----");
copy2[2] = 99;
for (int n : origin2) {
System.out.print(n + " ");
}
System.out.println();
System.out.println("-----복사본2출력-----");
for (int n : copy2) {
System.out.print(n + " ");
}
System.out.println();
/*
* 2. clone()
* 자바에서 제공하는 메서드
* 배열의 모든 요소를 새로운 배열로 복사
* 기본적으로 얕은 복사를 진행. 단, 기본형 배열은 깊은 복사로 동작(int, double...).
* */
int[] origin3 = {1, 2, 3, 4, 5};
int[] copy3 = origin3.clone();
copy3[2] = 99;
System.out.println();
System.out.println("-----원본3출력-----");
for (int n : origin3) {
System.out.print(n + " ");
}
System.out.println();
System.out.println("-----복사본3출력-----");
for (int n : copy3) {
System.out.print(n + " ");
}
}
}
2차원 배열
자료형이 같은 1차원 배열의 묶음.
ex) int[행][열] arr -> ~열의 1차원 배열이 행만큼 존재.
2차원 배열은 할당된 공간마다 index를 2개 부여
(앞은 행 : 몇번째 1차원배열인지, 뒤는 열 : 1차원배열의 개수)
선언된 공간마다 같은 길이의 1차원 배열을 사용할 수 있고
각각 다른길이의 1차원 배열을 할당 가능
2차원배열의 메모리 할당
자료형[][] 배열명;
배열명 = new 자료형[n][m];
또는
자료형[][] 배열명 = new 자료형[n][m];
for (int j=0; j<arr.length; j++) {
for (int i=0; i<arr[j].length; i++) {
System.out.print(arr[j][i] + " ");
}
System.out.println();
}
2차원 배열 탐색 방법
'JAVA' 카테고리의 다른 글
| JAVA 6일차 (3) | 2025.08.12 |
|---|---|
| JAVA 5일차(2) (0) | 2025.08.11 |
| JAVA 4일차(3) (2) | 2025.08.08 |
| JAVA 4일차(2) (2) | 2025.08.08 |
| JAVA 4일차(1) (4) | 2025.08.08 |