[JAVA] 객체지향 - 매개변수

2024. 8. 31. 19:49·Back-End/Java

[작성일: 2023. 01. 25]

 

기본형 매개변수(8개)

  • 변수의 값을 읽기만 할 수 있음 (Read only)
  • 변경 불가
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);
}

 

 

 

Study

  1. 객체 생성
  2. 참조변수 d가 생성됨
  3. 참조변수 d가 가리키는 객체 x의 값이 10이 됨
  4. d.x = 10
  5. change 메서드 호출
  6. d.x의 값이 메서드 int x에 저장됨(복사 x)
  7. change 메서드 실행, x가 둘 다 지역변수고 변수명이 같지만 저장공간이 다르기 때문에 문제 되지 않음
  8. x에 1000을 대입
  9. change 메서드의 println x는 가까운 x의 값을 출력함
  10. 메서드가 종료되면 호출한 곳으로 돌아감
  11. 다시 main메서드가 실행상태가 됨

 

 

 

 

 

참조형 매개변수

  • 참조형 매개변수: 변수의 값을 읽고 변경할 수 있음 (Read & Wirte)
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
  • 참조형 매개변수는 change 메서드 내에서 값을 바꾸면 main 메서드의 객체 값을 바꿀 수 있음.
  • 객체를 다룰 수 있도록 객체의 주소를 준 것.

 

 

 

 

 

참조형 반환타입

class Data3 { int x; }

class Ex6_8 {
  public static void main(String[] args) {
    Data3 d = new Data3(); // 멤버는 int x
    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 tmp = new Data3(); // 새로운 객체 생성
    
    tmp.x = d.x; // d.x의 값을 tmp.x에 복사
    
    return tmp; // 복사한 객체의 주소 반환 or 객체 반환
  }
}
 
⬇

d.x = 10
d2.x = 10
  • 반환타입과 변수의 타입이 일치해야 함
  • 반환타입이 참조형일 경우 변수의 타입도 참조형이어야 함
  • static 메서드가 같은 클래스 안에 있기 때문에 copy 앞에 참조변수를 생략함 (ex: "e."copy(); e. 생략)
  • static 메서드는 객체 생성 없이 호출 가능

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Java' 카테고리의 다른 글
  • [JAVA] 객체지향 - 상속, 포함
  • [JAVA] 객체지향 - 생성자
  • [JAVA] 객체지향 - 호출 스택
  • [JAVA] 객체지향 - 객체 생성, 사용, 배열
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    javascript
    김영한
    백준
    jsp
    게시판만들기
    Spring Security
    DB
    Swift
    성능최적화
    최주호
    Security
    생성자
    데이터베이스
    spring
    자바
    객체
    자바스크립트
    HTTP
    MVC
    JPA
    의존성주입
    다형성
    Java
    스프링
    html
    알고리즘
    Database
    프로그래머스
    변수
    sql
  • hELLO· Designed By정상우.v4.10.0
뚜비
[JAVA] 객체지향 - 매개변수
상단으로

티스토리툴바