[메모리 구조]
일반변수와 레퍼런스변수
변수 선언
타입 변수;
ex) int num;
변수 초기화(메모리에 할당)
타입 변수 = 값;
ex) int num = 10;
여기서 num은 일반변수 / d는 레퍼런스변수(참조변수)
메서드
자바에서 손님이나 커피 머신이라는 타입은 없다. 그래서 Class로 만들어야 한다.
커피 마시기, 커피 만들기 같은 행위를 Method라고 한다. 메서드는 클래스가 들고 있는 행위이다.
Stack 메모리
Queue / Stack
예시
main 메서드 코드영역 오픈 – 19번 실행, 20번 실행, 21번에서 a메서드 호출
a 메서드 코드 영역 오픈 – 6번에서 b메서드 호출
b 메서드 코드 영역 오픈 - 13,14,15번 실행
b메서드가 다 실행되고 쓸모가 없어지면 빠져나온다 이를 pop이라고 한다.
a메서드도 모든 코드가 전부 실행되고 나면 빠져나온다.
main 메서드가 전부 실행되고 pop. 더 이상 stack에 아무것도 없어진다.
Stack에 main메서드가 올라오는게 자바 프로그램이 시작되는 것이고,
Stack에 있는 main메서드가 다 처리되어 pop되는 것이 프로그램에 종료이다.
지역변수와 전역변수
지역변수 -> stack에 저장되는 애들, 메모리에 떠있는 시간 짧다.
전역변수 -> heap, static에 저장되는 애들, 메모리에 떠있는 시간 길다.
Stack (지역변수 = 메서드가 실행될 때, 메모리에 할당된다. = 메서드가 종료될 때, 메모리에서 사라진다.)
Heap (전역변수 = new할 때, 메모리에 할당된다. = 더 이상 참조하지 않을 때, 메모리에서 사라진다.)
Static (전역변수 = main메서드가 실행되기 전에 메모리에 할당된다. = main메서드가 종료되면 메모리에서 사라진다.)
메서드의 리턴
리턴이 없게된다면 add메서드가 실행되고 sum은 메모리에서 소멸된다. 그러면 sum 값을 다른 곳에서 찾을 수 없다. 다른 곳에서 sum의 값을 가져오기 위해서 return이 필요하다.
add메서드에서 값을 main에게 리턴해주고 할일이 없어지면 add큐는 종료된다. Stack메모리에 sum 또한 사라진다.
그러고 13번 라인에서 result값이 stack에 오른다.