프로세스 메모리맵
* 프로그램을 실행하면 프로세스가 이루어지고 프로세스는 메모리에 저장된다.
Stack Area : FIFO(First in Last out)방식 이며 Compile time binding이 이루어진다.
Heap Area : 이름을 못 붙이는 문제가 있지만 할당이 된다면 시작 주소(시작 정보)를 스택영역에 저장하여 끌어오며 그것을 레퍼런스 타입이라 한다. 스택 영역에서 저장한 시작 주소를 Reference Value라고 한다.
Global Area : 리터럴 및 명령어가 저장된다.
Method
Class 안에 있는 Funtion.
대규모 프로그램을 짜기 위한 기본적인 도구다.
- 모든 funtion은 class안에 포함 되어 있어야 한다. (java)
- 프로세스의 시작은 main에서 시작되기로 약속 되어 있다.
● Instruction set : 명령문의 집합
public static void main(String[] args)
옵션 리턴형 매소드이름 파라미터
풀이
→ 공개되고 클래스 메모리에 올라가있지 않아도 없고(리턴형) 스트링~ 이라는 메인 메소드.
*option : c에서는 3개, JAVA에는 5개의 공개 비공개 등의 기능이 있으며 외부에서 호출 가능 여부, 접근 제어자의 여부를 정한다. 반드시 붙여주어야 하며 붙여주지 않으면 설정된 디폴드 값이 입력된다.
*static : 이 메소드를 " 클래스를 만들지 않아도" 접근이 가능하게 한다. 클래스가 메모리에 올라가있지 않지만 메인 함수를 메모리(글로벌 영역)에 올리게 한다.
*void : "없다.", "모른다.", "상관하지 않겠다." 라는 뜻이다. →→ 리턴형은 없다.
public static int add(int a, int b)
풀이
두개의 값을 입력받아 합을 구하여 리턴하는 add함수를 작성하시오.
return
함수를 종료하고 스택에서 팝 하고 메인스택 임시변수 영역에 저장한다.
· 메소드가 중지된다.
· 스택에서 해당 메소드의 변수를 팝 시킨다.
· 리턴값을 호출한 함수에게 전달한다.
Scope
· 변수나 메소드가 호출되거나 I/O가 가능한 영역
어느 범위 내에서 읽고 쓰고 할 수 있다.
▶ 스코프를 구분하는 경우
· 메소드 (메인 함수) : 메모리맵의 구조상 메소드의 스택과 다른 함수 사이에 메인함수와 다른 함수를 구분할 수 있는 프로세스가 들어가있다. 역할 : 넘어오지마 이새기야
· 키워드 : (ex) for문)와 중괄호 안에 있는 리터럴은 다른 스코프로 구분한다.
하단은 좋지 않은 코드의 예다.
· 중괄호 : {} 안에 있는 함수는 별개로 취급을 했었다. (JAVA8 버전 이후 버전 부터
'JAVA' 카테고리의 다른 글
[Java] 참조형, String, Array (0) | 2022.05.23 |
---|---|
[Java] 1~n의 합 구하기 (0) | 2022.05.23 |
[Java] 2중 for문으로 구구단 만들기 (0) | 2022.05.22 |
[Java] 1~100의 수 중 소수 출력하기. (0) | 2022.05.22 |
[Java] 1~100의 홀수와 짝수의 합 구하기. (0) | 2022.05.22 |