Contents
Scope자바에서 메서드는 코드의 실행 단위입니다.
먼저 예제 프로그램을 보자
public class MethodEx01 { static void m1(){ // void : 반환할 게 없다. System.out.println("m1"); } static String m2(){ // main에서 실행시키면 열린다 System.out.println("m2"); return "m2"; // return - : 메서드 종료 } public static void main(String[] args) { MethodEx01.m1(); m1(); m2(); // 실행후 리턴 값인 "m2"로 바뀐다. String result = "m2"; // == String result = m2(); System.out.println("resulf : " + result); } }
public class MethodEx03 { static void m3(int n1){ System.out.println("m3 : " + n1); } static void m4(int n1, int n2) { // 매개 변수(parameter)가 두개 System.out.println("m4 : " + n1); System.out.println("m4 : " + n2); } public static void main(String[] args) { m3(1); m4(1,2); // 인수(Argument) } }
*파라미터가 동전 투입구, 인수가 동전 이라고 생각하자.
메서드안에 메서드를 만들지 못한다.
클래스 밖에서도 못 만든다.
하드웨어에서 메모리로 > class load라고 한다.
1. class load
2. sttaic 찾기
3. main 찾아서 실행
Method가 실행되면 Queue가 열린다.
what is Queue(큐) ?
먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO, First-In-First-Out)방식으로 데이터를 저장하고 관리하는 데이터 구조입니다.
Queue가 실행된 라인 (;)순으로 pop되는데, main Queue 실행중에 다른 Method가 실행되면, pop되지 않은 채로, Method Queue가 실행된다.
Then what's stack(스택)?
데이터를 저장하고 접근할 수 있는 선형 자료구조입니다. 스택은 후입선출(LIFO, Last-In-First-Out) 방식으로 데이터를 저장합니다.
push : 스택에 데이터를 추가하는 작업
pop : 데이터를 제거하는 작업 - 메모리에 있는 데이터를 CPU가 작업하는 것
top : 맨 위에 있는 데이터를 확인하는 작업
! static이 실행되지 않고, 동적으로 stack
Scope
public class ScopeEx01 { int n1 =1; // (heap) static int n2 = 2; // (static) static void m1() { // static 이친구는 메인 전에 띄어져 있다. int n1 = 10; System.out.println("m1 : " + n1); } void m2 () { // 동적으로 (stack)에 띄워야 한다. System.out.println("m1 : " + n1); } // 메인 시작전에 static에 n2변수와 m1메서드가 로드되어 있습니다. public static void main(String[] args) { System.out.println("1"); m1(); System.out.println("2"); } }


컴퓨터가 .java를 실행하는 순서
- class load
- static 찾아 띄우기
- main 실행
```햐
Question
- stack 에선 static자료를 찾을 수 있나요?
- 당연하지요-
className.varName
이와 같은 식으로 가능합니다
- stack에서 다른stack자료에 접근할 수 있나요? - 안됩니다!
static 과 heap은 클래스 내에 어디서든 찾을 수 있다.
static은 다른 클래스에서도 찾을 수 있음.
생명 주기
stack < heap < static
stack : 메소드가 실행 될 때 생성, 끝날 때 제거.
heap : new로 동적으로 띄어줄 때 생성
static : main 실행 전 생성
Share article