𝙅𝙖𝙫𝙖 λ°°μ—΄ 볡사 ν•¨μˆ˜

uuuouuoΒ·2022λ…„ 5μ›” 14일
0
post-thumbnail

πŸ“ λ°°μ—΄ 볡사 ν•¨μˆ˜


πŸ’‘ 얕은 볡사와 κΉŠμ€ 볡사

  • 얕은 볡사
    • λ‹¨μˆœνžˆ 객체의 μ£Όμ†Œ κ°’λ§Œμ„ λ³΅μ‚¬ν•˜λŠ” 것
    • λ³΅μ‚¬λœ λ°°μ—΄μ΄λ‚˜ 원본배열이 변경될 λ•Œ μ„œλ‘œ κ°„μ˜ 값이 같이 λ³€κ²½
  • κΉŠμ€ 볡사
    • 객체의 μ‹€μ œκ°’μ„ μƒˆλ‘œμš΄ 객체둜 λ³΅μ‚¬ν•˜λŠ” 것
    • λ³΅μ‚¬λœ λ°°μ—΄μ΄λ‚˜ 원본배열이 변경될 λ•Œ μ„œλ‘œ κ°„μ˜ 값은 λ°”λ€Œμ§€ μ•ŠμŒ
  • clone(), arraycopy(), copyOf() : 객체 배열을 볡사
    • 2μ°¨μ›μ˜ 경우 A[r][c]의 경우 A[r]만 κΉŠμ€ 볡사가 됨

βœ” 1차원 λ°°μ—΄μ˜ κΉŠμ€ 볡사

1. Object.clone()

int[] A = {1, 2, 3};
int[] B = A.clone();

2. Arrays.copyOf()

int[] A = {1, 2, 3};
int[] B = Arrays.copyOf(A, A.length); // 볡사할 λ°°μ—΄, μ‹œμž‘μ λΆ€ν„° ν•΄λ‹Ή indexκΉŒμ§€ 볡사
int[] B = Arrays.copyOfRange(A, 1, 3); // 볡사할 λ°°μ—΄, index 1~3볡사

3. System.arraycopy()

int[] A = {1, 2, 3};
int[] B = new int[A.length];
System.arraycopy(A, 0, B, 0, A.length);

βœ” 2차원 λ°°μ—΄μ˜ κΉŠμ€ 볡사

System.arraycopy()

int[][] A = {{1,2,3},{4,5,6}};
int[][] B = new int[A.length][A[0].length];
	    
for(int i = 0; i < B.length; i++) {
    System.arraycopy(A[i], 0, B[i], 0, A[0].length);
}

2. Arrays.copyOf()

int[][] A = {{1,2,3},{4,5,6}};
int[][] B = new int[A.length][A[0].length];
	    
for (int i = 0; i < B.length; i++) {
      B[i] = Arrays.copyOf(A[i],A[i].length);
}

0개의 λŒ“κΈ€