개발/JAVA

reuturn (예약어) 와 void , stack 메모리

기디개 2022. 7. 5.
반응형

인프런Do it! 자바 프로그래밍 입문 클래스와 객체1 (2) 복습 내용 중

url은 여기로! 참고로 무료 강의임

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9E%85%EB%AC%B8/lecture/18021?tab=curriculum&volume=1.00&speed=1.5 

 

예약어와 Void

 

- 매개변수(아래 코드에서는 int n1, int n2를 의미한다)

- 예약어 return이 없는 경우가 있다 → 그 때, 클래스 명을 void로 받는다.

그 코드는 아래와 같다

 

	public static void addNum(int n1, int n2){
		
		int result = n1 + n2;

그러나 이것을 예약어 return으로 받았을때

	public static void addNum(int n1, int n2){
		
		int result = n1 + n2;
		return result;

 

에러가 난다.

 

 


Stack 메모리

 

 

package classpart;

public class FunctionTest {

	public static void main(String[] args) {

		int num1 = 10;
		int num2 = 20;
		
		int sum = addNum(num1, num2);
		System.out.println(num1 + " + " + num2 + " = " + sum + "점입니다");
	}

	public static int addNum(int n1, int n2){
		
		
		int result = n1 + n2;
		return result;
	}
}

 

main 함수가 addnum()을 호출하고, 함수가 사용하는 메모리를 stack이라고 한다.

stack은 택배 상자처럼 위로 쌓이는 구조라고 생각을 하면 된다.

 

main 함수

- num1

- num2

- sum

 

이 4byte 씩 12byte를 차지하고 있고

 

그 위로 addNum 함수

- n1

- n2

- result 함수

가 쌓인다.

 

그렇기 때문에 함수가 호출이 한번 끝나고 나서 addNum의 메모리는 사라진다. 이것이 stack 메모리 구조! mathod도 이러한 메모리 구조를 가진다. 사라지기 때문에 지역변수라 불린다.

 

 

반응형

댓글

💲 추천 글