[질문] scjp덤프 문제중 이해가 안가네요.. ㅜㅜ
피어나
2023.04.01
class aaa{
public static void main(String[] args)
{
StringBuffer a = new StringBuffer(A);
StringBuffer b = new StringBuffer(B);
operate(a,b);
System.out.println(a+,+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
}
--------------------
AB,B
제 생각에는 A,B 가 출력될줄 알았는대 컴파일 실행해보니 결과가 AB,B 입니다. ㄱ-;;
제가 알고있던 참조변수의 개념에 혼란이 오네요.. 고수님의 의견을 듣고싶습니다. 도와주세요 ㅜ.ㅠ
-
타키
아~~이제야 이해가 되네요.. 제가 잠시 기본데이터타입과 참조변수를 헷갈렸었네요.
좋은 답변 감사합니다. ^^ -
맞빨이
에.. 제가 보기엔;; 객체 참조 변수(Object Reference Variable)를 제대로 이해하지 못하신 것 같은데요;;
x와 y는 객체 참조 변수입니다. 따라서 y=x; 의 행위는 객체 참조 변수의 값인 주소값만을 치환합니다.
하지만 x.append(y);는 객체 참조 변수가 가르키고 있는 실제 객체의 값에 치환을 하는 행위입니다.
(정확히 StringBuffer는 값 치환이 아니라 A에 B를 붙이는 행위 A가 AB로 바뀌는 게 아니라 A+B가