Day 19

ChangWoo·2023년 4월 23일
1

자바의 정석

목록 보기
19/71

ch 6-20,21 return문, 반환값

return문

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

반환타입이 void가 아닌 경우, 반드시 return문 필요

  • 그런데, 이런식으로 조건식이 참일 때 실행되는 코드만 적게 된다면 오류가 발생한다.
    그래서 조건식이 거짓일 때 실행되는 코드도 적어줘야 한다.

반환값

  • 메서드의 반환타입이 void가 아닐 때, return문을 생략 할 수 없다. (=return문 옆에 반환할 값을 적어줘야 한다.)
  • 반환값은 변수의 타입과 일치하거나, 자동형변환이 가능한 값(char,byte,short)이어야 한다.
  • 반환값의 타입 = 반환타입 = 변수의 타입 이어야 한다.

ch 6-22 호출스택 (call stack)

스택(stack)

  • 스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다.

<스택에 무언가를 집어 넣을 때>

  • 무언가를 집어 넣으면, 순서대로 위에 차곡차곡 쌓인다.

<스택에서 무언가를 꺼낼 때>

  • 무언가를 꺼내면 제일 위에 있는 것이 먼저 꺼내진다.

<스택의 규칙>

  • 스택은 위로 뚫린부분으로만 넣거나 뺄 수 잇고 왼쪽,오른쪽,아래로는 불가능하다.

호출 스택 (call Stack)

메서드 수행에 필요햔 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제

  • main메서드가 println메서드를 호출하면 그 위로 println메서드가 쌓이면서 실행상태가 되고, main메서드는 println메서드가 끝날 때까지 대기상태가 된다.
  • println메서드가 종료되면 스택에서 사라지고 다시 main메서드로 돌아와서 실행상태가 된다.
    아래 있는 메서드가 위의 메서드를 호출한 것(=main메서드가 println메서드를 호출)
    맨 위의 메서드 하나만 실행 중, 나머지는 대기중

Ex)

class Ex6_5 {
	public static void main(String[] args) {
		System.out.println("Hello");		
	}
}


1. 맨 처음 비어있는 상태
2. main메서드가 호출되서 스택에 올라간다.
3. main메서드가 println메서드를 호출해서 그 위로 올라가서 실행상태가 되고, main메서드는 대기상태가 된다.
4. println은 Hello를 출력하면서 자기의 일을 다 하고 사라지고 main메서드로 돌아온다.
5. main메서드도 자신의 할 일을 마쳤기 때문에 사라지고 프로그램은 종료된다.

profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글