728x90
매개변수
매개변수의 타입이 기본형(primitive type)일 때는 기본형 값이 복사되겠지만, 참조형(reference type)이면 인스턴스의 주소가 복사된다.
기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.(read only)
참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.(read & write)
기본형 매개변수
- change메서드가 호출되면서 ‘d.x’가 change메서드의 매개변수 x에 복사됨
- change메서드에서 x의 값을 1000으로 변경
- change메서드가 종료되면서 매개변수 x는 스택에서 제거됨
‘d.x’의 값이 변경된 것이 아니라, change메서드의 매개변수 x의 값이 변경된 것이다. 즉, 원본이 아닌 복사본이 변경된 것이라 원본에는 아무런 영향을 미치지 못한다. 이처럼 기본형 매개변수는 변수에 지정된 값만 읽을 수만 있을 뿐 변경할 수는 없다.
참조형 매개변수
위의전 예제와 달리 change메서드를 호출한 후에 d.x의 값이 변경되었다
- change메서드가 호출되면서 참조 변수 d의 값(주소)이 매개변수 d에 복사됨. 이제 매개변수 d에 저장된 주소 값으로 x에 접근이 가능
- change메서드에서 매개변수 d로 x의 값을 1000으로 변경
- change메서드가 종료되면서 매개변수 d는 스택에서 제거됨
매개변수를 참조형으로 선언했기 때문에, x의 값이 아닌 변수 d의 주소가 매개변수 d에 복사되었다. 이제 main메서드의 참조변수 d와 change메서드의 참조 변수 d는 같은 객체를 가리키게 된다. 그래서 매개변수 d로 x의 값을 읽는 것과 변경하는 것이 모두 가능한 것이다.
참조형 반환타입
반환 타입이 참조형이라는 것은 반환하는 값의 타입이 참조형이라는 얘긴데, 모든 참조형 타입의 값은 ‘객체의 주소’이므로 그저 정수 값이 반환되는 것이다.
반응형
'Server > 자바의정석' 카테고리의 다른 글
[Java 입문] 생성자(constructor) (0) | 2022.09.27 |
---|---|
[Java 입문] Static 메서드와 인스턴스 메서드 (0) | 2022.09.27 |
[Java 입문] 메서드 (0) | 2022.09.27 |
[Java 입문] 호출 스택 (0) | 2022.09.27 |
[Java 입문] 클래스와 객체 (0) | 2022.09.27 |