Method 문법

[Java] Method를 활용하기 위한 문법 기초, Queue, Stack
Dec 19, 2023
Method 문법
 
notion image
메서드는 호출 할 때만 내부가 실행된다.
m2( )는 실행이 끝나면 return 값인 “m2”로 바뀐다고 생각.
 

Calculator 클래스에서 매서드를 만들고 Calculator 앱에서 불러오기

package ex04; // 계산기 클래스 = 설계도 public class Calculator { public int add(int n1, int n2){ return n1+n2; } public int minus(int n1, int n2){ return n1-n2; } public double divide(double n1, double n2){ return n1/n2; } public int multi(int n1, int n2){ return n1*n2; } }
package ex04; public class CalculatorApp { public static void main(String[] args) { Calculator cal = new Calculator(); // Calculator의 모든 함수를 메모리에 띄움 int rAdd = cal.add(50,80); System.out.println("add: " +rAdd); int rMinus = cal.minus(80,50); System.out.println("minus: "+rMinus); double rDivide = cal.divide(80,50); System.out.println("divide: "+rDivide); int rMulti = cal.multi(80,50); System.out.println("multi: "+rMulti); } }
static이 없으면 new를 통해 불러와야 한다.(static이 있으면 상관없음)
new를 하는 순간 static이 없는 모든 값들이 heap에 저장됨
 
package ex04.test; public class ScopeEx01 { int n1 = 1; // heap 영역 static int n2 = 2; static void m1(){ //static 영역 int n5 = 10; //stack 영역 System.out.println("m1 : "+n5); // stack 영역 } void m2(){ // heap 영역 System.out.println("m2 : "+n1); // stack 영역 // n1에 접근하는 것은 heap이 heap에 접근 } // 메인 시작전에 static에 n2 변수와 m1 메서드가 로드 되어 있음. public static void main(String[] args) { System.out.println(1); m1(); System.out.println(2); } }
ScopEx01(클래스) static (n2=2, m1(), main) → 클래스명.x → 어디에서든지 접근 가능하다. heap (n1=1, m2()) → heap 끼리는 같은 Scope 여서 접근 가능하다. stack (n5=10) → 외부 접근 불가능
 

Scope

Scope : Stack은 Stack끼리 변수를 못찾는다.
ScopeEx01.java 파일이 javac를 통해 Compile되어 ScopeEx01.class 생성
ScopeEx01.class 파일은 java.exe를 통해 JVM에서 실행
ScopeEx01을 실행하면 JVM(Jaav Virtual Machine)에서 실행됨.
① ScopeEx01.class를 로드한다.
② static을 찾는다. (그림은 ScopeEx01만 static이 있는 상황)
③ main을 찾아서 실행한다.
  • main이 실행될 때 main Queue와 main Stack이 생긴다.
  • main Queue는 순차적으로 Put되고 Pop되는데 2번째 줄에서 m1을 실행하기 때문에 main Queue 2번째에 m1 Queue가 생성됨
  • m1 Queue가 생성되었으므로 Stack에는 m1 Stack이 생성되고, m1 Queue가 실행된다.
  • m1 Queue의 실행이 끝나면 동시에 m1 Stack도 사라진다.
  • 다시 main Queue로 돌아와 3번째, 4번째 줄을 실행하고 main Queue가 종료된다.
  • main Queue가 종료되어 main Stack도 사라진다.
Share article
RSSPowered by inblog