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

2025. 10. 3. 15:40·Java

기본형 매개변수

  • 변수의 값을 읽기만 가능 (read only)

참조형 매개변수

  • 변수의 값을 읽고 변경 가능 (read & write)

  • 기본형 매개변수
    class Data {
        int x;
    }

    class Ex {
        public static void main(String[] args) {
            Data d = new Data();
            d.x = 10;
            System.out.println("main() : x = " + d.x);

            change(d.x);
            System.out.println("After change(d.x)");
            System.out.println("main() : x = " + d.x);
        }

        static void change(int x) { // 기본형 매개변수
            x = 1000; // 지역변수
            System.out.println("change() : x = " + x);
        }
    }
    
    
    // 결과
    main() : x = 10
    change() : x = 1000
    After change(d.x)
    main() : x = 10
  • 참조형 매개변수
    class Data2 {
        int x;
    }

    class Ex {
        public static void main(String[] args) {
            Data2 d = new Data2();
            d.x = 10;
            System.out.println("main() : x = " + d.x);

            change(d);
            System.out.println("After change(d)");
            System.out.println("main() : x = " + d.x);
        }

        static void change(Data2 d) { // 참조형 매개변수
            d.x = 1000;
            System.out.println("change() : x = " + d.x);
        }
    }
    
    
    // 결과
    main() : x = 10
    change() : x = 1000
    After change(d)
    main() : x = 1000

참조형 반환타입

    class Data3 {
        int x;
    }

    class Ex {
        public static void main(String[] args) {
            Data3 d = new Data3();
            d.x = 10;

            Data3 d2 = copy(d);
            System.out.println("d.x =" + d.x);
            System.out.println("d2.x = " + d2.x);
        }

        static Data3 copy(Data3 d) { // 반환타입 : Data3 (참조형), 반환타입이 참조형이면 객체의 주소를 반환
            Data3 tmp = new Data3(); // 새로운 객체 tmp를 생성한다.

            tmp.x = d.x; // d.x의 값을 tmp.x에 복사한다.

            return tmp; // 복사한 객체의 주소를 반환한다.
        }
    }
    
    // 결과
    d.x = 10
    d2.x = 10
    • static 메서드 : 객체 생성없니 호출가능

 

'Java' 카테고리의 다른 글

[Java] 객체지향개념I  (0) 2025.10.08
[Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드  (0) 2025.10.03
[Java] Primitive type(원시타입) vs. Reference type(참조타입)  (3) 2025.08.30
[Java] 진법 변환 정리 (n진수 <-> 10진수)  (0) 2025.08.30
[Java] Integer.valueOf()와 Integer.parseInt()의 차이  (1) 2025.08.20
'Java' 카테고리의 다른 글
  • [Java] 객체지향개념I
  • [Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드
  • [Java] Primitive type(원시타입) vs. Reference type(참조타입)
  • [Java] 진법 변환 정리 (n진수 <-> 10진수)
싹난 감자🥔🌱
싹난 감자🥔🌱
개발 블로그
  • 싹난 감자🥔🌱
    감자에 싹이나서 잎이나서
    싹난 감자🥔🌱
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Spring (3)
      • Java (17)
      • LLM (1)
      • DevOps (4)
      • Algorithm (14)
        • 백준 (4)
        • 프로그래머스 (0)
        • 코드업 (10)
      • Computer Science (3)
        • Operating System (2)
        • Computer Architecture (1)
      • Trouble Shooting 🚀 (0)
      • 회고 & 성장기록 (1)
      • 설계 📐 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    BufferedReader
    자바Scanner비교
    자바BufferedReader
    docker
    Scanner
    비트
    배포
    코딩테스트
    2진수
    Java
    자바 입력
    자바성능
    2차원 배열
    알고리즘입력
    구간합
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[Java] 기본형 매개변수와 참조형 매개변수
상단으로

티스토리툴바