Programming Language/Java

[JAVA] 기본형 매개변수와 참조형 매개변수, 참조형 반환타입

BS Kwak 2021. 7. 16. 19:39

메서드의 매개변수 

메서드의 매개변수 타입은 기본형, 참조형으로 나눌 수 있음

 

기본형 매개변수

변수의 값을 읽기만 하고 변경은 불가능함

class Data{
	int x;
}

class example{
	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(" main() : x = "+ d.x);
     }
     static void change(int x){		//기본형 매개변수
     	x = 1000;
        System.out.println("change() x : "+x);
}

"main() :  x = "에 대한 두개의 출력값은 모두 "10"이다. 

"change() x"는 1000이 출력된다. 

change( )호출이 되어서 x값을 1000으로 바꾸더라도 지역변수를 바꾼 것이기 때문에, 그대로 10만 출력되는 것

 

"기본형 매개변수"는 "읽기"만 가능함!!

 

참조형 매개변수

변수의 값을 읽고 변경 할 수 있음

class Data{
	int x;
}

class example{
	public static void main(String[] args){
    	Data d = new Data();	//객체 생성
        d.x = 10;
        System.out.println(" main() : x = "+ d.x);
        
        change(d);
        System.out.println(" main() : x = "+ d.x);
     }
     
     static void change(Data d){		//참조형 매개변수
     	d.x = 1000;
        System.out.println("change() x : "+d.x);
}

change() 이전 출력값은 10이고, change( ) 이후 출력되는 모든 값이 "1000"이다. 

change( )의 매개변수가 type이 기본형이 아니기 때문에 참조형 매개변수~! 

 

 main( )이 change( )에 객체 d에 대한 "리모콘"을 줬다고 생각하면 조금.. 쉽다!

 

참조형 반환타입

class Data{
	int x;
}

class example{
	public static void main(String[] args){
    	Data d = new Data();	//객체 생성
        d.x = 10;
        
        Data d2 = copy(d);
        System.out.println("d.x = "+ d.x);
        System.out.println("d2.x = "+d2.x); 
     }
     
     static Data copy(Data d){		//참조형 매개변수
     	Data tmp = new Data(); //새로운 객체 tmp 생성
        
        tmp.x = d.x //d.x의 값을 tmp.x에 복사
        
        return tmp;	//복사한 객체의 주소 반환
     }
}

출력값은 d.x와 d2.x 모두 10이다.