[Java] 기본형 매개변수와 참조형 매개변수

2024. 9. 9. 16:30·Backend/Java
728x90

기본형 매개변수와 참조형 매개변수

Java에서는 매서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨준다. 매개변수의 타입이 기본형일 때는 기본형 값이 복사되겠지만, 참조형이면 인스턴스의 주소가 복사된다.

메서드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만, 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에 값을 읽어 오는 것은 물론 값을 변경하는 것도 가능하다.

 기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.
 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다.

static void change(int x){...} - 기본형 매개변수

 change 메서드에서 main 메서드로부터 넘겨받은 d.x의 값을 1000으로 변경했는데도 main메서드에서는 d.x의 값이 그대로이다.

 

  1. change메서드가 호출되면서 'd.x'가 change메서드의 매개변수 x에 복사된다.
  2. change메서드에서 x의 값을 1000으로 변경한다.
  3. change메서드가 종료되면서 매개변수 x는 스택에서 제거괸다.

'd.x'의 값이 변경된 것이 아니라, change메서드의 매개변수 x의 값이 변경된 것이다.즉 원본이 아닌 복사본이 변경된 것이라 원본에는 아무런 영향을 미치지 못한다. 기본형 매개변수는 변수에 저장된 값만 읽을 수 있을 뿐 변경할 수는 없다.

 

static voind change(Data1 d) {...} - 참조형 매개변수

change메서드를 호출한 후 d.x의 값이 변경되었다.

change메서드의 매개변수가 참조형이라서 값이 아니라 '값이 저장된 주소'를 change메서드에게 넘겨주었기 때문에 값을 읽어오는 것 뿐만 아니라 변경하는 것도 가능하다.

  1. change 메서드가 호출되면서 참조변수 d의 값(주소)이 매개변수 d에 복사된다. 이제 매개변수 d에 저장된 주소 값으로 x에 접근이 가능하다.
  2. change메서드에서 매개변수 d로 x의 값을 1000으로 변경한다.
  3. change메서드가 종료되면서 매개변수 d는 스택에서 제거된다.

change메서드의 매개변수를 참조형으로 선언했기 때문에, x의 값이 아닌 주소가 매개변수 d에 복사되었다. 이제 main메서드의 참조변수 d와 change메서드의 참조형 변수 d는 같은 객체를 가리키게 된다. 그래서 매개변수 d로 x의 값을 읽는 것과 변경하는 것이 모두 가능한 것이다.

728x90
저작자표시 (새창열림)

'Backend > Java' 카테고리의 다른 글

[Java] 인터페이스 상속 실습 문제  (1) 2024.09.06
[Java] JVM 메모리 구조 / JVM 수행 과정  (1) 2024.09.05
[Java] Class 변수와 메서드  (0) 2024.09.02
[Java] Class 객체 배열  (0) 2024.08.30
[Java] Class 란 / 인스턴스란 / 인스턴스의 생성과 사용  (0) 2024.08.29
'Backend/Java' 카테고리의 다른 글
  • [Java] 인터페이스 상속 실습 문제
  • [Java] JVM 메모리 구조 / JVM 수행 과정
  • [Java] Class 변수와 메서드
  • [Java] Class 객체 배열
hyeminyy
hyeminyy
Full Stack Developer | consistency
  • hyeminyy
    maemingu
    hyeminyy
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Backend (46)
        • Java (15)
        • JSP & Servlet (5)
        • EL & JSTL (3)
        • Spring (15)
        • DataBase (4)
        • 알고리즘 (4)
      • Frontend (11)
        • Next.js (5)
        • JavaScript (3)
        • Vue.js (3)
      • IT_STUDY (21)
        • 정보처리기사 (9)
        • SQLD (8)
        • 개인공부 (4)
      • Developer! (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • Notion-portfolio
  • 공지사항

  • 인기 글

  • 태그

    Spring
    정보처리기사 실기 요약
    코딩테스트
    el
    뷰
    httpServletRequest
    정처기
    프론트엔드
    springProject
    정보처리기사
    Servlet
    NextJS
    SQL
    개발자
    알고리즘
    sqld자격증
    정보처리기사 실기
    JSP
    백앤드
    Java
    정처기 실기
    springboot
    정처기 요약
    jstl
    정처기 실기 요약
    백앤드개발자
    Next.js
    SQLD
    정처기 필기 요약
    MVC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeminyy
[Java] 기본형 매개변수와 참조형 매개변수
상단으로

티스토리툴바