정리/Java

자바의 정석 61~64강 return문, 반환값, 호출스택, 기본형매개변수, 참조형 매개변수, 참조형 반환타입

민발자 2023. 8. 3. 15:35
728x90

ch 6-20~21 return문 반환값

1. return문

실행 중인 메서드를 종료하고 호출한 곳으로 되돌아감

반환타입이 void면 생략 가능(컴파일러가 자동으로 추가해 줌)

반환타입이 void가 아니면 반드시 필요, 참/거짓일 때 모두 return값이 있어야 함

// 참일 때만 return문 실행되므로 에러 발생
int max(int a, int b){
	if(a > b)
		return a;
}

 

2. 반환값

반환타입과 반환값은 일치하거나 자동형변환 가능한 타입이어야 함(int일 경우 char, byte, short)

 


ch 6-22 호출스택

1. 스택

밑이 막힌 상자처럼 위에 차곡차곡 쌓이고 꺼낼 땐 위부터 꺼내짐

 

2. 호출 스택 call stack

메서드 수행에 필요한 메모리가 제공되는 공간

호출되면 호출 스택에 메모리를 할당하고 종료 시 해제

맨 위의 메서드 하나만 실행되고 나머지는 대기 중

싱글 스레드에선 하나의 메서드만 실행됨

 

main이 println 메서드를 호출했을 때 호출 스택의 변화


ch 6-23 기본형 매개변수

1. 매개변수

기본형 매개변수 : 변수의 값 읽기만 가능

참조형 매개변수 : 변수의 값을 읽고 변경 가능

 

2. 기본형 매개변수

main의 x는 change 메서드를 실행했지만 x의 값이 왜 10인지 호출스택 그려보며 이해하기

 


ch 6-24~25 참조형 매개변수, 참조형 반환타입

1. 참조형 매개변수

참조변수 d의 주소값을 매개변수로 넘겨주기 때문에 change 메서드를 실행할 때 값을 변경할 수 있음

기본형은 매개변수의 값을 복사하기 때문에 change메서드를 실행할 때 값이 변경되지 않음

 

2. 참조형 반환타입

 참조형 반환타입은 주소를 반환

 

+) 추가 

동일 클래스 + static → 메서드 호출 참조변수없고, 객체 생성 없이 호출 가능

Ex6_8 e = new Ex6_8();

e.copy(d);

이 과정없이 호출 가능

728x90