왜 드래그한 부분이 100이 나온건지 알 수 있을까요? 40이 나오게 하고 싶은데
자바 배우고 있는데요 질문 있어요.
익명(183.108)
2018-11-15 12:25
추천 0
댓글 8
다른 게시글
-
sudo emerge -auvDN @worldㅇㄹ(rerereq) | 18.11.15추천 0
-
이번주 티맥스 면접본다 ㅎㅎㅎ [11]ㅁㄴㅇㄹ(110.70) | 18.11.15추천 0
-
이런 건 뭘로 어떻게 만드는 거예요? [1]익명(180.64) | 18.11.15추천 0
-
좆소면접엔익명(163.49) | 18.11.15추천 0
-
오늘 국비학원 프로젝트 발표인데 너무 긴장된다..찬웅(ckrgksejdro) | 18.11.15추천 0
-
해외는 선생이라는 직업을 가장 하급으로 생각해어부(121.166) | 18.11.15추천 0
-
ps 프갤에서만쓰는용어아니네.. [1]익명(223.33) | 18.11.15추천 0
-
틀딱들 특익명(211.246) | 18.11.15추천 0
-
나이드니 게임이 넘 재미없다익명(175.223) | 18.11.15추천 0
-
노짱 콘 삭제 됬냐?펭귄(39.7) | 18.11.15추천 0
number부터 잘 복사됬는지 찍어봐 - dc App
number = list 는 list에 있는 값을 number로 복사하지 않습니다. list에 있는 값들에 대한 메모리 영역 주소가 number로 복사된 것이고 number와 list는, 각각의 값을 가지는 메모리영역이 아닌, list에서 최초 할당한 {10,20,30,40,50}을 가진 영역에 대해 참조를 하고 있는 상태입니다. 선생님의 댁의 위치를 나타내는 구 지번주소와 신규 도로명 주소의 관계와 약간 유사합니다. 선생님의 댁 위치를 나타내는 지번주소와 도로명 주수도는 명백히 다르지만, 사실상 둘 다 선생님 댁의 위치를 나타내고있습니다.
list[3]=100으로 하신건 [list 라는 메모리 영역주소가 있는데... 얜 배열이야.. 근데 거기서 4번째(0부터시작이니까) 주소공간에 있는놈의 값을 100으로 할당하겠어..] 입니다. 앞서 list와 number는 같은공간을 가리킨다고 하였습니다. 그러므로 number[3]도 list[3]과 같은 값이 나오게 되고 선생님께서 의도하신 40이 안나오는겁니다. 선생님이 40을 100으로 바꿔버렸으니까요 ( list[3]=100)
반면에 Arrays.copyOf를 찾아보시면 아시겠지만, 이 친구는 배열 안에 있는 내용을 가지고 새로운 배열에 생성하여 그 배열에 대한 메모리영역 주소를 리턴하는 메서드입니다. 그럼 list와 는 독립된, 그렇지만 list의 값을 가진 새로운 공간이 할당된 것이지요. 시간이 없어서 그냥 마치겠습니다. 더 자세한 내용을 알고싶으시다면 구글에 '얕은 복사와 깊은 복사'정도로 검색해보시면 될거같습니다.
앞서 말씀드리기로, numeber = list 가 도로명주소와 구 지번주소라고 설명을 드렸는데 Arrays.copyOf는 선생님께서 거주하고 계신 건물의 설계상 완벽히 동일한 건물을, 완전히 다른곳에 지었다고 보시면 됩니다.
얼핏 보면 두 건물은 똑같은거 같지만, 사실상 위치가 완벽히 다른곳에 있는 겁니다.
반면에 listcopy = Arrays.copyOf(..)가 아닌 Arrays.copyOf(...)를 실행하면 어떻게 될까요? 매개변수로 넘기신 list를 완벽히 복사한 메모리영역의 어느곳에 생기게 됩니다. 그런데? 그 주소를 모르는 상태가 되버리죠. ->이에 관련해선 변수의 스코프, 라이프타임 등으로 검색해보시면 보다 깊은 내용을 아시게 될겁니다. 선생님께서..건물주이신 않겠지만 건물주라고 가정을해보고 현재 거주하신곳이 너무 세입자들한테 인기가 좋고 본인도 마음에 드셔서 어딘가에 똑같은 건물을 건축을 하였는데, 선생님 께서 그 새로 건축한 건물의 주소를 모르는 상태이신겁니다. 주소 모르면 못찾아가죠?
갑사합니다!! - dc App