수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

call by reference의 의미

우수리

2023.04.01

[java 질문입니다]
call by reference는 주소값을 넘기기 때문에 메소드에서 인자로 넘어온 값을 변경했을 시에 그 값이 콜을 한 영역에서도 변경상태가 적용되는 것으로 알고 있습니다.
그런데 그 인자를 다른 값으로 변경하는 것은 안됩니다.

예를 들면 다음과 같은 것이지요

public void func(Map m) {m = null; // 1) null로 변경
Map mm = new HashMap();

mm.put(123,456);

m = mm; // 2) 다른 객체 값으로 변경

}
주소를 넘기기 때문에 그 주소를 참조하여 값을 변경하는 것은 가능하지만 주소 자체 변경은 불가능 하다는 말인듯 합니다.

제가 과연 옳게 생각하고 있는 것입니까?

프로그램을 하다가 저런 경우가 발생하여 질문을 드립니다.
요즘 들어서 부쩍 기초가 많이 부족하구나 라고 느끼고 있습니다. ;;

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • Creative

    제가 알기로는 call by value로 하면 copy function이 수행됩니다. call by reference로 주소만 넘겨 받는게 빠른 방법이죠. string이나 pointer를 사용할때도 call by value로 하면 쓸데없는 copy에 의해 느려지게 됩니다.
    위의 경우에는 call by reference로 하시려서든,

    public void func(Map &m) { // &를 쓰셔야 할듯,
    // m은 미리 initialize되어야겠죠?

  • 일본어못해요

    이렇다고 하네요...
    자바에서는 call by reference라는 말은 원래 없고 call by value만 존재한답니다.
    객체를 넘길때는 주소값 자체가 call by value로 복사되어 넘어간다고 하네요.
    따라서 메소드에서 객체를 변화시킬수 있는 것은 객체의 주소를 알수 있어서이고 그 주소를 만일 다른 주소로 대체하거나 null로 바꾼다 하더라고 주소의 복사값이기 때문에 기존의 주소를 그대로 살아 있고 단지 메소드 내부에서 그 주소를 참조할 방법이

  • 방방

    수다님이 하시는 생각이 맞지 않나요? 메서드인자 m은 메서드호출시의 인자가 참조하고 있는 주소를 똑같이 참조만 하고 있는 새로운 변수이기 때문에 m=null을 설정함과 동시에 그에 대한 참조는 사라진다고 생각합니다. 결국 m=mm;이 되더라고 m은 벌써 호출시에 건네준 인자의 메모리 주소를 잃었기 때문에 메인에서 설정값을 참조하는건 불가능하다고 생각합니다.

  • 이룩

    메소드로 넘어온 변수(위의 경우에는 m)을 변경하므로써 메소드를 호출할때 넘겨준 변수 값을 변경하는 질문이었습니다.
    예를 들면 메인메소드에서 Map m을 위의 메소드로 넘겼을 시에 메소드에서 인자로 넘어온 m 값을 null로 할당을 하게 되면 그게 메인메소드에서 반영이 되는지 여부를 알고 싶었습니다.

    직접 해봤을 시에 적용이 안되서 call by reference의 의미를 다시 알고자 했던 것입니다 ^^;;
    메소드로 넘겨서 객체를 변경할 수 있는 이유

  • 볼수록매력

    음.. 어떤 질문인지 제가 파악못한걸수도, 제가 모르는 것일 수도 있지만
    주소 자체를 변경한다는점이 무슨의미인지 파악을 잘 못하겠네요^^;
    만약 제가 생각하는 것이라면 java 프로그래밍을 하면서 크게 신경쓸 이유가 있을까? 합니다.
    물론 단순히 궁굼증이라면 모르지만^^;;

번호 제 목 글쓴이 날짜
2703348 쿽스모드가 무엇인지 궁금합니다. (4) 나려 2025-07-31
2703324 [접근성]더보기 (8) 매1혻적 2025-07-31
2703274 AVADA 테마 메인화면 슬라이드 질문.. 뿌우 2025-07-30
2703218 kboard 게시판 질문요 !! 핑크빛입술 2025-07-30
2703188 HTML 4.01에서 faq 제이쿼리 슬라이드업 되면서 떨림문제 (2) 꺄홋 2025-07-30
2703163 수다님 죄송한데 질문하나하겠습니다.. (1) 나오 2025-07-29
2703138 [질문]java강좌란에서 궁금한 점이 있어 올립니다. (2) 옆집오빠야 2025-07-29
2703109 HTML5 코드 내용이 달라요..ㅜㅜ (1) 우솔 2025-07-29
2703032 이런 질문도 가능할 지는 모르겠지만요~ (1) SweetChoco 2025-07-28
2703009 레이어 코딩 어떻게 해야 할까요? 수련 2025-07-28
2702980 익스 개발툴에서 대체텍스트보기에 대해 질문있어요~ (5) 핑크빛애교 2025-07-28
2702927 jsp 공부중인대 회원등록을누르면 등록이 안되고 에러가나요 소율 2025-07-27
2702843 16진수 출력시 10을 제거 하는 방법 좀 알려주세요 (3) Schokolade 2025-07-26
2702818 float:left , right 왜그런거죠? (4) 화이트캣 2025-07-26
2702792 vertical-align이 적용이 안되네요...ㅜ.ㅜ (4) 라미 2025-07-26
2702735 c++ 로 mmpi 프로그램을 만드는데 푸른잎 2025-07-25
2702705 그누보드 갤러리게시판 오류 문의합니다. good 2025-07-25
2702679 동영상의 흰색배경을 투명하게 플래시로 임포트하려면?? (3) 별솔 2025-07-25
2702655 예약 부분 & 페이지 번역 플러그인 질문해요. (3) 연하늘 2025-07-25
2702632 틀린부분이 어디죠?? 컴파일하면 오류가 떠요 (3) 해사랑해 2025-07-24
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com