로그인 바로가기 하위 메뉴 바로가기 본문 바로가기

데이터 구조 및 분석: Linear Structure and Dynamic Programming

임시 이미지 KAIST 산업및시스템공학과 문일철
http://kooc.kaist.ac.kr/datastructure-2019s/forum/89475
좋아요 1780 수강생 3369

교수님께서 String이 assignment라고 하셨는데 이 부분이 좀 헷갈립니다.

a = "hello" 

b = "hello" 이렇게 한다면 is를 하여도 ==를 하여도 true가 나오잖아요. 인덱스로도 접근할 수 있고요.

그래서 전 당연히 래퍼런스라고 생각하였는데... 

a[1] = "k" 이런식으로 수정이 안되니 assignment다 이렇게 이해하면 될까요? 

만약 리스트 처럼 저장되어 있다면 수정이 가능하다

hello가 통채로 assign 되어서 자체를 수정하는게 불가능 하다 이렇게요

더 자세히 생각을 해보면

z = 3 이렇게 할당을 한 뒤 z = 4 이렇게 바꿀 수 있는 것은

3이 4로 바뀐 것이 아니라 3은 그대로 메모리 어딘가에 저장되어있고

4가 새로 메모리에 할당 되어서 z에 넣어준다.

그런데 String도 이와 마찬가지여서 String자체를 a에 넣어주는 것이다.

중간에 변경하는 것은 3을 새로운 메모리 할당없이 4로 바꿔주려는 것과 동일한 행위이다.