참조변수와 인스턴스
자바에서의 변수는 참조변수이다. 새로운 instance를 만들면 항상 새로운 메모리 공간에 instance 가 만들어 진다. 같은 참조변수에 새로운 instance를 등록하면 예전에 있던 instance의 메모리는 자동으로 반납된다.
class M {
public static void main(String[] arg) {
String s = "첫 문자열";
String ss = "둘 문자열";
System.out.println(s);
System.out.println(ss);
s = "디사 첫 문자열";
System.out.println(s);
System.out.println(ss);
}
}
D:\JavaAI>java M
첫 문자열
둘 문자열
디사 첫 문자열
둘 문자열
instance의 값을 복사하기
class M {
public static void main(String[] arg) {
StringBuffer s1 = new StringBuffer("첫 문자열");
StringBuffer s2 = s1;
System.out.println(s1);
System.out.println(s2);
s1.append(" s1에붙이기");
System.out.println(s1);
System.out.println(s2);
}
}
D:\JavaAI>java M
첫 문자열
첫 문자열
첫 문자열 s1에붙이기
첫 문자열 s1에붙이기
class M {
public static void main(String[] arg) {
StringBuffer s1 = new StringBuffer("첫 문자열");
StringBuffer s2 = s1;
System.out.println(s1);
System.out.println(s2);
s2.append(" s2에붙이기");
System.out.println(s1);
System.out.println(s2);
}
}
D:\JavaAI>java M
첫 문자열
첫 문자열
첫 문자열 s2에붙이기
첫 문자열 s2에붙이기
주의 : s1만을 바꾸었는데 s2까지 바뀌었다. instance 참조변수 s1과 s2는 실제로는 같은 메모리상의 instance를 참조하고 있다. 따라서 그 중 하나의 값을 바꾸면 그 메모리상의 instance
를 참조하고 있는 다른 참조변수 또한 값이 바뀐 instance를 가리킨다.
[출처] [06] 참조변수와 인스턴스|작성자 쟈드