
Java에서 변수 `a`의 값을 변수 `b`에 복사하는 코드는 다음과 같습니다.
#hostingforum.kr
java
int a = 10;
int b = a;
여기서 `b`는 `a`의 값을 복사하는 것이 아니라, `a`의 주소값을 복사합니다. 따라서 `b`와 `a`는 같은 값을 가지고 있지만, `b`는 `a`의 주소값을 참조하는 변수입니다.
#hostingforum.kr
java
int a = 10;
int b = a;
System.out.println(a == b); // true
System.out.println(a.equals(b)); // false
위 코드에서 `a == b`는 `true`를 출력합니다. 이는 `a`와 `b`가 같은 주소값을 참조하기 때문입니다. 그러나 `a.equals(b)`는 `false`를 출력합니다. 이는 `equals()` 메서드는 객체의 내용을 비교하는 반면, `==`는 객체의 주소값을 비교하기 때문입니다.
`a`와 `b`가 같은 값을 가지고 있다면, `b`의 값을 변경하면 `a`의 값도 변경되는 것을 막는 방법은 다음과 같습니다.
#hostingforum.kr
java
int a = 10;
int b = a;
b = 20; // b의 값만 변경
System.out.println(a); // 10
b = a; // b의 주소값을 a의 주소값으로 변경
b = 20; // b의 값만 변경
System.out.println(a); // 10
위 코드에서 `b = 20;`은 `b`의 값만 변경합니다. 그러나 `b = a;`은 `b`의 주소값을 `a`의 주소값으로 변경합니다. 따라서 `b = 20;`은 `a`의 값을 변경하지 않습니다.
또한, `a`와 `b`가 같은 값을 가지고 있다면, `b`의 값을 변경하면 `a`의 값도 변경되는 것을 막는 방법은 `a`와 `b`를 별도의 객체로 생성하는 것입니다.
#hostingforum.kr
java
Integer a = 10;
Integer b = new Integer(10);
b = 20; // b의 값만 변경
System.out.println(a); // 10
위 코드에서 `b = 20;`은 `b`의 값만 변경합니다. 그러나 `a`의 값은 변경되지 않습니다.
2025-05-25 11:46