안녕하세요.


얼마전에 우리는 '인수가 없는 함수'와 '인수가 있는 함수'를 배웠습니다. 근데 이 두가지를 좀더 자세히 말하자면 '인수가 없는 void함수, '인수가 있는 void함수'라고 말할 수 있습니다.



public static void 함수명()



이처럼 여태까지는 void를 함수명 앞에 적어줬는데 void의 뜻은 리턴값(반환값)이 없다는 뜻입니다. 그럼 도대체 리턴값이 무슨 뜻일까요?


리턴값이 있는 함수 즉, 리턴함수를 한번 만들어보면 이해가 빠를 것 같네요. 아래를 보시죠.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package study;
 
import javax.swing.JOptionPane;
 
public class Study01 {
 
    public static void main(String[] args) {
 
        String back_pack = teacher();
        JOptionPane.showMessageDialog(null, back_pack);
 
    }
 
    public static String teacher() {
 
        return "homework";
    }
}
cs



컴퓨터는 항상 메인함수부터 처리한다고 했습니다.


9행을 처리하다가 back_pack이라는 스트링변수에다가 teacher()함수를 집어넣으라는 명령을 맞딱뜨립니다.


14~17행의 모든 글자를 집어넣으라는 뜻... 이 아닙니다.



14~17행에 정의되어 있는 teacher()함수를 한번 살펴봐야겠네요.



return "homework";



딸랑 이게 내용 다입니다. homework이라는 문자열을 내놓는다 는 뜻이죠. return이 사전상으로는 반환한다는 뜻인데 내놓는다가 더 이해하기 쉬워서 내놓는다라고 하겠습니다.



String box = teacher();



다시 이걸 보실까요? teacher 함수를 호출하니까 homework를 내놓으셨습니다(선생님이니까 높임말 ㅋ)



String box = "homework";



결국 이 문장하고 똑같은거죠.




제가 함수의 제작법을,



public static void 함수명()



이렇게 알려드렸는데 사실 이건 void함수의 제작법이었습니다.


이쯤에서 함수의 사용방법을 다시 알려드릴게요.



public static 리턴할 값의 자료형 함수명()



이렇게 사용하는 거죠. 위 예제에서는 빨간색 부분에 스트링이 들어가 있습니다. 리턴값이 없을 경우에는 빨간색 부분에 void가 들어갑니다.



이쯤에서 리턴의 존재의미에 대해 이의를 제기하는 분이 계실 것 같습니다. 그냥 아래처럼 만들면 편하지 않느냐 라구요.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package study;
 
import javax.swing.JOptionPane;
 
public class Study01 {
 
    public static void main(String[] args) {
 
        teacher();
        
    }
 
    public static void teacher() {
 
        JOptionPane.showMessageDialog(null"homework");
        
    }
}
cs


확실히 이렇게 void함수로 만들면 메인함수가 간결해집니다.

사실, 함수를 void함수로 만들지, 리턴함수로 만들지는 바로 처리를 어디서 할 것이냐 에 따라서 갈립니다.

위처럼 void함수로 만들면 처리를 그 함수 내에서 합니다. 메세지박스까지 띄워버리네요. 근데 메세지박스로 띄울때도 있고 다르게 출력할 때도 있고 다양하다면? 또는 어떻게 출력할지 정해지지 않았다면?

그럴때는 리턴함수로 만들어서 그 함수 내에서는 계산만 하도록 코딩해놓아야겠죠. 그 함수가 결과값을 내놓으면 처리는 메인함수에서 하는 겁니다. 아래를 보시죠.






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package study;
 
import javax.swing.JOptionPane;
 
public class Study01 {
 
    public static void main(String[] args) {
 
        JOptionPane.showMessageDialog(null, teacher());
        System.out.println(teacher());
 
    }
 
    public static String teacher() {
 
        return "homework";
    }
    
}
cs


처리를 메인함수에서 하고 있습니다. 리턴값을 이용해서 콘솔출력도 하고 메세지박스에 띄우기도 하네요^^


감사합니다.



+ Recent posts