관심있는 주제/Java

메소드

Lynn123 2018. 11. 13. 00:06
반응형

메소드는 영어로 method 라고 하며 다른 언어에서는 함수라고도 한다. 메소드를 이해하고 싶다면 메소드의 정의 부분보다는 입력값과 출력값을 먼저 이해하는 것이 좋다. 그후에 메소드의 정부를 보는 것이 이해하는데 큰 도움이 된다. 


가장 대표적인 예로 main method를 들 수 있다.


numbering() 이라는 메소드를 만들어 보았다. 그걸 main에 호출해서 실행하면 numbering() 메소드가 실행이 되고 while문이 돌아가서 저런 0~9 값이 출력이 된다. 

같은 class 안에 있는 메소드는 저런식으로 쉽게 불러올 수 있다.


-만약 메소드가 없다면 ?

메소드가 없는 상태에서 어떤 작업을 반복으로 실행하고 싶다면 살짝의 노가다가 필요해진다. (메소드가 있는 상태에서는 그냥 메소드를 여러번 호출하면 된다.) 반복문이 생긴 이유와 같이 메소드도 그런 효율성 때문에라도 꼭 필요한 것 같다.


- 메소드의 입력

( ) 안에 변수를 지정할 수도 있다. (변수, 변수의 수 ... 이 다른 메소드는 다른 메소드로 취급한다.)

앞의 예제와 다르게 method에 int limit 이라는 변수를 넣어줬다.

그리고 조건의 limit을 저 변수 limit으로 이용했다.

===> 내가 main에서 함수를 불러올 때 넣는 int 값을 limit으로 입력받아 출력한다.

즉 0 ~ 4까지의 값을 출력한다.


메소드를 효율적으로 활용하기 위해서는  항상 그때 그때 코드를 수정할 수 없으니 변수에 변할 수도 있는 값을 넣어주는 것이 좋다.


한 단계 더 생각해 본다. 만약 i 의 initial value 를 0이 아니라 그때 그때 지정하고 싶다면 어떻게 해야할까? method 의 변수를 2변수로 넣어주면 된다. 


나는 함수라는 것을 수학의 함수 개념으로 생각하는게 쉬운 것 같다. 

y=f(x) 라는 함수가 있고 그 함수가 저 while 을 돌리는 값이고 x가 limit 이라고 생각해 본다.

x가 달라지면 f(x)값이 달라지는건 당연히 알고있다. 따라서 method의 limit인 x가 달라지면 while이 출력하는 값이 달라진다. 

또한 y=f(a,b) 라는 2변수 함수라고 생각해보자. a와 b의 값에 따라서 f의 함수값이 달라진다.

그냥 단순하게 그렇게 이해해 보았다. 함수를 불러올 때도 f(a,b) 처럼 numbering(3,5) 로 생긴거라고 생각했다.


- 메소드의 출력값1 (return)

void가 없는 함수는 return 이 존재한다.(즉 void는 return이 없다.) return은 함수가 돌려주는 값이라고 생각하면 될 것 같다. 따라서 함수를 호출하면 그 함수의 return 값을 가져온다.

String numbering = > String은 return type

따라서 String인 output을 return 한다.

main method에서 numbering(0,5)는 output이라는 String값을 가진다.

=> return을 출력하면 init=0이고 limit=5인 애의 output이 출력된다. 

// 01234

(설명을 해보자면 String 0 + String 1 = 01 이런 방식으로 01234 라는 String값이 나온다.)


자바는 return을 만나면 실행중인 메소드를 종료시킨다. 뒤에 뭐가 있든 무조건 종료시키고 그 뒤에 오는 값을 출력값으로 외부에 반환한다. 


-메소드의 출력값2 

return 은 꼭 하나일 필요가 없다. 위에서 볼 수 있듯 조건문을 넣어 return을 다르게 뽑아낼 수도 있다. 나는 int i =6으로 줬으니 i는 0, 1, 2가 아니다. 따라서 return은 "none" 이다. 


array도 return이 될 수 있다.

return type 이 String[]인 getMembers 라는 메소드를 만들었다. 메소드 안에서 array를 정의를 하고 그것을 return 하도록 한다. 

메인에서 메소드를 불러오고 그것을 새 array에 넣어준다. (return 이 array니까)


설명이 제대로 된건지 모르겠지만 아무튼 void가 없는 메소드는 return값을 가질 수 있고 그 return을 메인에서 가져와서 사용할 수 있다. 함수는 함수명(변수) 로 불러오면 된다.

반응형

'관심있는 주제 > Java' 카테고리의 다른 글

클래스  (0) 2018.11.19
Scanner  (0) 2018.11.15
배열 (Array)  (0) 2018.11.12
반복문(while , for)  (0) 2018.11.09
조건문(if, switch) + 논리 연산자  (0) 2018.11.09