본문 바로가기
JAVA

[JAVA] 메서드(리턴 타입의 유무, 매개변수 유무), 지역변수

by 정공자씨 2024. 4. 17.

 

 

리턴 타입이 없는 메서드(void)

정의

  • 리턴 타입이 없다는 뜻은
  • 메서드를 수행한 후에 결과값을 호출한 곳으로 돌려주지 않는다는 의미

 

 

형식

  • 리턴 타입이 없는 메서드를 만들 때 void를 사용
  • 메서드 내부에서  return 코드도 사용하지 않음

 

 

예시

public void print() {
	System.out.println("return값이 없는 메서드를 호출합니다.");
}

 

void

  • 메서드 종료 시에 호출한 곳으로 반환해야 하는 값이 없음
  • 반환 값이 없는 경우 사용

② print( ) : 매개변수가 없으므로, 호출 시에 어떤 인자 값도 메서드로 전달하지 않음

③ public : 모든 위치에서 호출이 가능

return이 없음

 

 

 

 

 

 

리턴 타입이 있는 메서드

정의

  • 메서드를 수행한 후의 결과값을 이용하여 추가적인 작업을 수행하고 싶을 때, 리턴 타입이 있는 메서드를 사용
  • 호출한 곳으로 값을 넘겨주려면 return 다음에 값을 명시
메서드를 수행한 후의 결과값을 이용하고자 할 때
return을 사용하여 호출한 곳으로 결과값을 넘겨주고, 그 값을 변수에 담아서 사용

 

 

 

형식

public int addInt(int x, int y) {  // 리턴할 타입: int
    int result = x + y;
    return result; 
}
  • 리턴할 값의 타입(기본형 타입, 참조형 타입 등)을 메서드 선언부에 작성
  • 메서드 내부에서  return을 사용하여 리턴할 값을 작성 

 

 

예시

public class Test {
    static int addInt(int x, int y) {
        int result = x + y;
        return result; // result가 3.33인 경우 에러(int타입, 즉 정수 타입이 아닌 실수 타입임)
    }
    
    public static void main(String [] args) {
    	int result = addInt(3, 4);  // 메서드의 반환 값을 result 변수에 담아서 사용
    }
}
  • 리턴 값은 메서드 선언부의 리턴 타입과 반드시 일치해야 함
    • int addInt(int x, int y)
    • return 3;
  • 메서드의 반환값을 변수(result)에 담음

 

 

 

 

 

매개변수가 있는 메서드

정의

  • 메서드 호출하면서 메서드가 처리할 데이터를 전달
  • 메서드의 매개변수를 이용하여 메서드로 데이터를 전달

 

 

형식

print(1000); // 인수를 넣어서 print메서드를 호출
public void print(int x) { // 매개변수 x = 1000
	System.out.println("전달된 값 : " + x);
}

 

① int x

  • 메서드가 처리할 값을 전달 받는 매개변수(x)

② 메서드 호출 시에 전달되는 값(인수)

  • 매개변수(x)와 같은 타입이어야 함

③ 매개변수(x)

  • 메서드 호출 시에 메모리에 생성되고, 메서드가 종료하면 메모리에서 소멸(stack메모리)
  • 매개변수는 메서드 내에서 사용되므로, 지역변수와 동일하게 동작

 

 

 


매개변수와 인수의 차이점?

- 인수 : 메서드를 호출 할 때 전달되는 값, 메서드가 처리해야 하는 값 
             (예) : print(1000)의 경우, 1000이 인수
   
- 매개변수 : 인수들을 받는 변수(메서드 내에서 지역변수로 동작)
             (예) : public void print(int x)의 경우, x는 매개변수

 

 

지역 변수

정의

  • 메서드 구현 블록 내에서 선언한 변수

 

 

지역변수의 사용 범위

  • 선언한 메서드의 구현 블록 내에서만 사용 가능

 

 

예시 1

public class CharInputTest {

    static void printsum() { // static 메서드		
    	int sum = 0; // 지역변수

        for(int i = 1; i <= 100; i++) {
            sum += i; 
        }	    
        System.out.println("1에서 100까지의 합 : " + sum);
    }

    public static void main(String[] args) { 
        printsum(); // 메서드 호출
        
        //System.out.println(sum); // 에러: printsum메서드 내에서 선언된 sum(지역변수)라서 출력 불가
    }
}
  • 변수인 sum
    • 메서드(printsum) 내에서 선언된 지역변수
    • 지역변수는 선언 이후 반드시 초기화 필요
  • 지역변수 sum은 선언된 메서드 블록 내에서만 접근이 가능
    • 따라서, main() 메서드에서 printsum메서드의 지역변수인 sum에 접근할 수 없음
  • 지역변수 sum은 
    • 메서드 호출 시에 메모리에 생성 되고, 메서드 종료 후에는 메모리에서 소멸
stack 영역 메모리지역변수메서드 호출 시에 메모리에 생성, 종료 시에 소멸

 

 

 

 

예시 2

public class CharInputTest {

    static int printsum(int num) {		
    	int sum = 0; // 지역변수

        for(int i = 1; i <= num; i++) { // 매개변수 num(지역변수) 
            sum += i; 
        }	            
        return sum;
    }

    public static void main(String[] args) { 
        int result = printsum(100); // 메서드 호출
        
        //System.out.println(num);  // 에러: printsum메서드 내에서 선언된 sum(지역변수)
        //System.out.println(sum);  // 에러: num(매개변수) 지역변수처럼 사용
        System.out.println(result);   // 5050 
    }
}

 

 

 

 

 

 

출처

https://gogogameboy.tistory.com/entry/java-method-void#google_vignette