반응형

자바에서의 변수는 참조변수이다. 새로운 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를 가리킨다.


반응형

'Java > Java' 카테고리의 다른 글

리팩터링  (0) 2014.05.09
JUnit을 이용한 단위테스트  (0) 2014.05.08
Java  (0) 2014.03.27
디자인패턴  (0) 2013.12.12
객체지향 개념  (0) 2002.03.01

+ Recent posts