JAVA
[JAVA] 메서드(리턴 타입의 유무, 매개변수 유무), 지역변수
정공자씨
2024. 4. 17. 14:26
리턴 타입이 없는 메서드(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