티스토리 뷰

반응형

 

🤔 메서드란?

문장들을 묶어 놓은 것

값(입력)을 받아서 처리하고, 결과를 반환(출력)

 

메서드 = 선언부 + 구현부

 

 

🤔 메서드의 장점?

코드의 중복을 줄일 수 있다.

코드의 관리가 쉽다.

코드를 재사용할 수 있다.

코드가 간결해서 이해하기 쉬워진다.

 

int add(int a, int b) { // 선언부
    int result = a + b;                       // 구현부
    return result; // 호출한 메서드로 결과 반환  // 구현부
}

 

✅ 메서드는 클래스 영역에만 정의 가능하다

 

 

 

 

🤔 Return이란?

실행 중인 메서드를 종료하고 호출한 곳으로 되돌아가는 것

 

반환타입이 void가 아닌 경우, 반드시 return 필요

 

 

🤔 호출 스택이란?

스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓임.

 

호출 스택 : 메서드 수행에 필요한 메모리가 제공되는 공간

메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제

 

스택에서

아래에 있는 메서드가 위의 메서드를 호출한 것

맨 위의 메서드 하나만 실행 중, 나머지는 대기 중

 

 

🤔 기본형 매개변수란?

기본형 매개변수 : 변수의 값을 읽기만 할 수 있다. (read only)

 

다음 코드의 실행결과를 예측해보라.

public class Test {
    public static void main(String[] args) {
        Data d = new Data();
        d.x = 10;
        System.out.println("main() : " + d.x);

        change(d.x);
        System.out.println("After change(d.x)");
        System.out.println("main() : x = " + d.x);
    }
    
    static void change(int x) {
        x = 1000;
        System.out.println("change() : x = " + x);
    }
}

class Data { 
    int x;
}

 

실행결과

main() : x = 10
change() : X = 1000
After change(d.x)
main() : x = 10

 

마지막 main() : x = 10이 되는 이유는 x=1000은 지역변수 이기 때문이다!!

 

 

🤔 참조형 매개변수란?

참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다. (read & write)

 

다음 코드의 실행결과를 예측해보라.

public class Ch6_24참조형매개변수 {
    public static void main(String[] args) {
        Data2 d = new Data2();
        d.x = 10;
        System.out.println("main() : x = " + d.x);

        change(d);
        System.out.println("After change(d)");
        System.out.println("main() : x = " + d.x);
    }

    static void change(Data2 d) { // 참조형 매개변수
        d.x = 1000;
        System.out.println("change() : x = " + d.x);
    }
}

 

실행결과

main() : x = 10
change() : x = 1000
After change(d)
main() : x = 1000

 

 

다음의 실행 결과를 예측해보라.

class Data3 { int x; }
public class Ch6_25참조형반환타입 {
    public static void main(String[] args) {
        Data3 d = new Data3();
        d.x = 10;
        Data3 d2 = copy(d);
        System.out.println("d.x =" + d.x);
        System.out.println("d2.x =" + d2.x);
    }

    static Data3 copy(Data3 d) {
        Data3 tmp = new Data3(); // 새로운 객체 tmp 생성
        tmp.x = d.x; // d.x의 값을 tmp.x에 복사
        return tmp; // 복사한 객체의 주소를 반환한다.
    }
}

 

실행결과

d.x =10
d2.x =10

반응형