자바 공부 얕은복사부분 공부하는데 이해가 안가는 부분을 발견해서요...


얕은복사가 단순 필드값을 복사해서 객체를 복제하는 것이다 라고 되어있고 필드가 참조타입일경우

객체의 번지(주소)가 복사된다고 하는데요.


예제 소스코드에서 클래스를 얕은 복사하는데 필드중에 String 타입이 있습니다

String 타입은 참조타입이잖아요?


클래스를 복사후에 복사 클래스의 String 타입의 필드를 변경후

필드값을 출력해보니 원본은 그대로있고 복사객체의 필드는 변경이 되었는데요...


값이 둘다 같이 바뀌어야 되는것 아닌가요?

예를들어 인스턴스 s1과 s1을 얕은복사한 인스턴스 s2가 있다고할때

s1.password = "12345" //원본객체 필드에 저장되어있는 값

이면

s2.password도 "12345"를 가르키고 있을겁니다. 얕은복사라 참조값을 복사했을테니까여.


여기서

s1.password = "67890" 으로 변경후


s1.password와 s2.password를 출력해보니..저는 같은 값이 출력될줄 알았는데

s1은 67890dl 출력되고 s2는 12345가 출력되네요..


왜 각각 다른곳을 바라보나요?