상세 컨텐츠

본문 제목

JAVA 배열(Array) 복사/복제 clone()

Spring/JAVA

by Chan.94 2022. 1. 12. 15:25

본문

반응형

얕은복사

  주소지값을 공유하여 사용한다.

  ex)  B = A

  B의 값을 수정하면 A의 값도 함께 수정된다.

class Main {
  public static void main(String[] args) {
    int a[] = {1, 2, 3}; 
    int b[] = a;     

    b[0] = 5; 
  }
}

a : {5,2,3}
b : {5,2,3}

 

깊은복사 [1차원 배열]

  새로운 메모리 공간에 복사한다.

  clone();

class Main {
  public static void main(String[] args) {
    int a[] = {1, 2, 3}; 
    int b[] = a.clone();    

    b[0] = 5; 
  }
}

a : {1,2,3}
b : {5,2,3}

 

깊은복사[2차원 배열]

2차원 배열은 단순clone()으로 복사가 되지 않는다. 별도의 로직을 통해 2차원 배열을 복사해야한다.

class Main {
  public static void main(String[] args) {
    int[][] a = {{1,2,3}, {4,5,6}};
    int[][] b = new int[a.length][a[0].length];
    for (int nIdx=0; nIdx<a.length; nIdx++) {
      b[nIdx] = a[nIdx].clone();
    }
    b[0][1] = 10;
  }
}

a : {{1,2,3}, {4,5,6}}
b : {{1,10,3}, {4,5,6}}

 

반응형

관련글 더보기

댓글 영역

>