주소지값을 공유하여 사용한다.
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}
새로운 메모리 공간에 복사한다.
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차원 배열은 단순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}}
[JAVA] 변수, 객체의 메모리 관리 (Call By Value, Call By Reference) (0) | 2022.05.14 |
---|---|
[JAVA] 우선순위큐 (Priority Queue) (0) | 2022.02.24 |
객체 참조시 인터페이스 사용 이유 (0) | 2021.12.08 |
Reflection 을 이용한 getMethod / getDeclaredMethods / invoke (1) | 2021.11.22 |
[JAVA] HashMap 사용법 (EntrySey, KeySet) (17) | 2021.11.01 |
댓글 영역