[Java/객체지향] 매개변수

2024. 8. 18. 20:09프로그래밍 언어/Java

기본형 매개변수 → 읽기only

class Data{int x;}

class Ex6_6 {
    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);
    }
}

참조형 매개변수 → 읽기, 쓰기(변경)

class Data2{int x;}

class Ex6_7 {
    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.x)");
        System.out.println("main() : x = " + d.x);
    }

    static void change(Data2 d){
        d.x = 1000;
        System.out.println("change[] : x = "+d.x);
    }
}

참조형 반환타입

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

        Data3 d2 = copy(d);
				//참조변수 없는 이유
				//(1) static메서드: 객체 생성없이 호출O
				//(2) 같은 클래스에 있어서
        System.out.println("d.x ="+d.x);
        System.out.println("d2.x="+d2.x);

    }

    static Data3 copy(Data3 d){
        Data3 tmp = new Data3();//새로운 객체 tmp 생성(1)
        tmp.x = d.x; // d.x의 값을 tmp.x에 복사(2)
        return tmp; // 복사한 객체의 주소를 반환(3)
    }
}
  • =객체의 주소를 반환한다!
  • 모든 참조형 타입의 값 = 객체의 주소 → just 정수값이 반환
  • 반환하는 타입이 ‘Data’의 객체의 주소 → 반환타입이 ‘Data’