컬렉션을 넘기는 메소드 질문입니다
핑크빛애교
다음과 같은 코드가 있습니다.
public class ListSub {
public static void main(String[] args) {
List list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4); changeList(list1);
showList(list1); // 리스트
Map m = new HashMap();
m.put(1, a);
m.put(2, b);changeMap(m);
System.out.println(m);
}
public static void changeList(List list1) {
List list = new ArrayList();
list = list1;
list.add(111);
}
public static void showList(List list) {
for(int i = 0; i list.size(); i++) {
System.out.println(list.get(i));
}
}
public static void changeMap(Map m) {
Map subM = new HashMap();
subM = m;
subM.put(123, 456);
}
}
위의 결과는 각각 1 2 3 4 111 / {123=456, 2=b, 1=a}
이렇습니다.
제가 생각하기에는 메소드에서 지역변수를 생성해서 그 변수의 값을 변경을 해서 원래의 값은 변경되지 않을것 같았는데 결과는 전혀 다른 방향으로 되었습니다.
일반적인 사용자 정의 오브젝트의 경우에는 위의 경우 지역변수만 변경되고 인자로 넘어온 값은 변경되지 않았습니다.
혹 Collection 계열에서는 원래 위와 같은 결과가 나오게 한 것인지 알고 싶습니다.
-
두빛나래
답변 감사합니다. ^^
아직 내공이 덜 쌓여서 수양좀 더 해야겠네요 ^^ -
소라
지역변수가 primitive type 이라면 복사가 일어나겠지만, refrernce 형이란것에..
-
딸기맛캔디
참고로 지금은 1개 클래스에서 스태틱 메서드로 왔다 갔다 하는 정도지만 나중에 실력 쌓이시면 레퍼런스가 클래스 4~5개 를 넘나드는 코딩도 하실날이 올겁니다 ㅎㅎ
-
LetMeGo
Collection 계열이라서 그런게 아니라 넘기는게 call by reference 이냐 call by value 냐 에 차이가 나는거고
보통 클래스는 reference 타입이고 님의 소스도 정확하게 reference 를 주고 받으니 값이 계속 누적되는것이죠.
public static void changeList(List list1) {
List list = new ArrayList();
list = list1;
list.add(\111\
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2696263 | 프로그래밍 공부시작 질문 (6) | 진이 | 2025-05-28 |
2696206 | SK2의 플래시를 밴치마킹하려고하는데요.. (1) | 비내리던날 | 2025-05-27 |
2696179 | ie7에서 사라지지가 않네요. (2) | 빛길 | 2025-05-27 |
2696150 | div에 스크롤 생기게 하려면... (2) | 에드가 | 2025-05-27 |
2696123 | 자료구조론 공부중인데 | 김자영 | 2025-05-26 |
2696094 | exe 파일 | 제철 | 2025-05-26 |
2696043 | 제이쿼리 .scroll() 관련 질문드립니다 | 이거이름임 | 2025-05-26 |
2695984 | 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) | 들꿈 | 2025-05-25 |
2695934 | tr 속성값 (9) | 새 | 2025-05-25 |
2695905 | ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) | 슬아라 | 2025-05-24 |
2695878 | form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) | 핫파랑 | 2025-05-24 |
2695844 | 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) | 한빛 | 2025-05-24 |
2695814 | [질문] PDA에서 애플릿이 가능한가요? (1) | 봄시내 | 2025-05-24 |
2695785 | 웹 설정 도와줄분 | 화이트캣 | 2025-05-23 |
2695730 | 갑자기 기억이 안나는데 accesskey 속성.. | 빛나라 | 2025-05-23 |
2695702 | [질문] Java 버전 차이에 의한 오류?!! (2) | 검사 | 2025-05-23 |
2695672 | 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) | 뽀그리 | 2025-05-22 |
2695647 | 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) | 아빠몬 | 2025-05-22 |
2695586 | IFRAME 캐싱 질문 | 봄나비 | 2025-05-22 |
2695498 | [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; | 터1프한렩 | 2025-05-21 |