inblog logo
|
MiracleCoding
    JAVA

    [JAVA] (Method) 메서드 그리고 static, heap, stack

    Dec 19, 2023
    [JAVA] (Method) 메서드 그리고 static, heap, stack
    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); } }
    메서드 유형 m1, m2
     
    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) } }
    메서드 유형 m3, m4
    *파라미터가 동전 투입구, 인수가 동전 이라고 생각하자.
     
    메서드안에 메서드를 만들지 못한다. 클래스 밖에서도 못 만든다.
     
     
    하드웨어에서 메모리로 > 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"); } }
     
    notion image
    notion image

    컴퓨터가 .java를 실행하는 순서

    1. class load
    1. static 찾아 띄우기
    1. main 실행
      1. ```햐

    Question

    1. stack 에선 static자료를 찾을 수 있나요? - 당연하지요- className.varName 이와 같은 식으로 가능합니다
    1. stack에서 다른stack자료에 접근할 수 있나요? - 안됩니다!
     
    static 과 heap은 클래스 내에 어디서든 찾을 수 있다. static은 다른 클래스에서도 찾을 수 있음.
     

    생명 주기

    stack < heap < static
    stack : 메소드가 실행 될 때 생성, 끝날 때 제거. heap : new로 동적으로 띄어줄 때 생성 static : main 실행 전 생성
     
    Share article

    MiracleCoding

    RSS·Powered by Inblog