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이다.