Self-study/자바

[자바/Java] Method(메서드)/ Return / Call Stack

Munyoung 2023. 9. 15. 10:06

I. 메서드란? 

1. 문장들을 묶어놓은 것. (작업단위로 문장들을 묶어서 이름을 붙인 것) 

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

3. 반드시 클래스 안에 있어야 함. 

int add(int X, int Y){
	int result = X+Y; 
    
    return result; // 결과 반환 
}

메서드의 장점 

- 코드의 중복 줄일 수 있음

- 코드의 관리 쉬움. 

- 코드의 재사용 가능 

 

메서드의 작성 

- 반복적으로 수행되는 여러 문장을 메서드로 작성 

- 하나의 메서드는 한 가지 기능만 수행하도록 작성 

메서드 = 선언부 + 구현부 

반환타입 메서드이름 (타입 변수명, 타입 변수명, ....)  // 선언부 
{
 // 메서드 호출시 수행될 코드 
 }	// 구현부

메서드의 호출 ( Method Call)

//메서드를 호출하는 방법 

메서드이름( 값1, 값2, ...)

II. Retrun문

실행 중인 메서드를 종료하고 호출한 곳으로 돌아감. 

반환타입이 void가 아닌 경우에는 반드시 return 문이 필요함. 

void printGugudan(int dan) {
	if(!(2 <= dan && dan <= 9))
    	return;  // dan의 값이 2~9가 아닌 경우, 호출한 곳으로 되돌아감. 
        
    for(int i = 1; i <= 9; i++){
    	System.out.printf("%d * %d = %d%n", dan, i, dan * i);
    }
 
 	return; // 반환 타입이 void라서 생략가능, 컴파일러가 자동추가 
}

 

III. 호출스택(call stack)

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

메서드 수행에 필요한 메모리가 제공되는 공간, 

 

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

아래 메서드가 위의 매서드를 호출함. 맨위의 메서드 하나만 실행하고 나머지는 대기. 

 

IV. static메서드와 인스턴스 메서드 

인스턴스 변수를 사용하느냐, 사용하지 않느냐의 차이!!

  

1) 인스턴스 메서드 

- 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출

- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 

- 메서드 내에서 인스턴스 변수(iv) 사용가능

 

2) static 메서드

- 객체 생성 없이 '클래스이름.메서드이름()'으로 호출

- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드 

- 메서드 내에서 인스턴스 변수(iv) 사용불가 

- iv를 사용하지 않을 때, static을 붙이면 됨. 

class TestClass2{
	int iv; 
    static int cv; 
    
    void instanceMethod(){      //인스턴스 메서드 
    	System.out.println(iv); 
        System.out.println(iv); 
    }
    
    static void staticMethod(){
    	System.out.println(iv); // Error! 인스턴스 변수 사용 불가능
        System.out.println(cv); 
    }
}

'Self-study > 자바' 카테고리의 다른 글

[Java] HashMap  (0) 2024.01.02
[자바/Java] overloading  (0) 2023.09.15
[자바/Java] 변수(Variable)  (0) 2023.09.15
[자바/Java] 클래스와 객체  (0) 2023.09.09