09009
[Java] (중요) 참조형 반환타입의 메서드 본문
메서드에서 매개변수뿐만 아니라 반환타입도 참조형이 될 수 있다.
✍ 입력
class Car {
int x;
}
public class ReferenceReturnEx {
public static void main(String[] args) {
Car c1 = new Car();
c1.x = 10;
Car c2 = copy(c1);
System.out.println("c1.x = " + c1.x);
System.out.println("c2.x = " + c2.x);
}
private static Car copy(Car c1) {
Car tmp = new Car(); // 새로운 객체 tmp 생성
tmp.x = c1.x; // c1.x의 값을 tmp.x에 복사한다.
return tmp; // 복사한 객체의 주소를 반환
}
}
copy 메서드를 호출하면서 참조변수 c1의 값이 매개변수 c1에 복사된다.
새로운 객체를 생성한 이후, c1.x에 저장된 값을 tmp.x에 복사한다.
copy 메서드가 종료되면서 반환한 tmp의 값은 참조변수 c2에 저장되고
copy 메서드가 종료되어 tmp는 사라졌지만 c2로 새로운 객체를 다룰 수 있는 것이다.
💻 출력
c1.x = 10
c2.x = 10
위의 소스코드에서 copy메서드는 새로운 Car 클래스의 객체를 생성한 후, 매개변수로 넘겨받은 객체에 저장된 값을
복사해서 반환한다. 반환하는 값은 Car 객체의 주소이므로 반환 타입이 객체 'Car'인 것이다.
copy메서드의 반환타입이 'Car'이므로 호출결과를 저장하는 변수의 타입 역시 ' Car' 타입의 참조변수이어야 한다.
Car c2 = copy(c1);
반환타입이 참조형이라는 것 = 메서드가 객체의 주소를 반환한다는 것
/
5/7
'Back-End > JAVA' 카테고리의 다른 글
[Java] 접근 제어자 (0) | 2023.03.19 |
---|---|
[Java] 클래스변수, 인스턴스변수, 초기화 블럭 (0) | 2023.03.18 |
[Java] 쓰레드 (0) | 2023.03.13 |
[Java] Generic (0) | 2023.03.12 |
[Java] Arrays 클래스 (0) | 2023.03.12 |
Comments