[Java] return(리턴)과 void(보이드)
메서드란?
-
객체의 동작을 해당하는 {}블록(코드블록)을 말하며, 객체안에 존재하는 함수를 말한다.
-
입력받은 내용을 처리하기 위해 수행 내용을 담고있는 공간이다.
-
수행문 담고있는 이름있는 코드 덩어리이다.
리턴이란?
수행문의 메서드에서 주어진 반환값이나 반환식으로 매개변수의 값을 반환한다.
반환값이나 반환식을 생략하여 메서드의 매개 변수값을 반환할 수 있다.
return값이 있는 메서드
public static int add(int a, int b) {
int sum = a + b;
return sum;
}
int : 반환 타입
add : return값이 있는 메서드
retrrn sum; : sum이 반환값임
(int a, int b) : 매개변수
int result = add(3, 4); // 호출과 변수저장의 과정을 생략하고,
System.out.println(result); // 바로 System.out.println(add(3,4)) 형태로 출력 가능하다.
위의 코드는 add라는 메서드를 작성하여 a+b의 결과값을 볼 수 있다.
주로 리턴값이 있는 메서드는 외부에서 출력을 위해 사용한다. 외부 출력의 범위는 메서드 명 앞에 접근제한자로 지정을 할 수 있다.
리턴값을 지정할때는 반환타입으로 설정한 int형으로 리턴값을 지정해야한다. 즉, 반환타입과 리턴값은 같은 타입을 가지고 있어야 한다.
결과값 sum을 리턴으로 반환된다. 호출할때는 메서드의 결과값 sum을 result변수에 저장하여 출력할 수 있다.
return값이 있는 메서드에서는 표준출력을 사용하지 않는다. 그 이유는 같은 값이 두 번 출력될 수 있기 때문이다.
public static int add(int a, int b) {
int sum = a + b;
System.out.println(sum); // 이렇게 리터턴값이 있는 메서드 안에서 표준출력을 작성하게되면 7이라는 숫자가 두 번 출력된다.
return sum;
}
1번째 출력 = int result = add(3, 4); 의 문장에서 매개변수를 저장하여 실행이 되었기 때문에 한번 출력
2번째 출력 = System.out.println(result); 표준출력을 이용해서 리턴값을 출력
이렇게 실행되기 때문이다. 그래서 return값이 있는 메서드 안에는 표준출력System.out.println();을 사용하지 않는다.
void 메서드
public static void doubleArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
System.out.println(Arrays.toString(arr)); // 출력 결과: [2, 4, 6, 8]
}
void : 반환 타입
doubleArray : void 메서드
반환값 없음
(int[] arr) : 매개변수
int[] arr = {1, 2, 3, 4};
doubleArray(arr);
위의 코드는 doubleArray라는 메서드를 작성하여 매개변수로 보내준 배열{1,2,3,4}를 2배로 만드는 내용을 볼 수 있다.
void메서드는 내부 출력을 위해 사용한다. 또는 외부에서 매개변수값을 보내주면 저장하는 기능을 하기도 한다.
메서드내에서 출력이유는 내부에서 처리된 결과를 외부에서 확인하기 위해서 이다. 그래야지 외부에서는 메서드가 어떤 동작을 수행하는지 이해할 수 있기 때문이다.
더 쉽게 설명해보자면 내가 같은 반 친구들과 이야기한 내용을 선생님에게 말씀드리려고 할때 어떤 이유 때문에 이런 이야기가 나왔고 그래서 어떤식으로 진행해야하고, 이런게 궁금하다 라고 구체적으로 이야기를 해야 선생님은 이해할 수 있습니다. 이런 형태와 비슷하게 void메서드의 안의 내용을 자세하게 알기 위해서 void메서드 안에서 출력한다 라고 생각하면 된다.
void메서드는 반환타입이 없기 때문에 메서드 내에서 만들어진 값을 바로 반환할 수는 없다. 예를들어, 매개변수를 전달받아서 실행 후, 반환이 되지 않고 메서드를 종료하게 된다.
void메서드는 참조 자료형 매개변수의 경우 값을 직접 변경할 수 있기 때문에 매개변수의 주소값을 반환해 준다.
댓글남기기