메서드 3요소에는
input, output, 기능 이 있는데 =>메서드의 시그니처이다.
메서드에는
입력 x 출력 x
입력 o 출력 x
입력 x 출력 o
입력 o 출력 o 이 있다
이게 무슨 말이냐면 코드를 보면서 설명하겠다.
public static void method1() {}
public static void method2(int a) {}
public static int method3() { return 3;}
public static int method4(int a) {return a;}
우선 입력x 출력 x인 메서드를 보시면
입력 즉 매개변수값도 없고 반환값이 void인 걸 볼 수 있다 이 void를 번역하면 빈 공간,공허함 뭐 이런 식으로 번역이 된다.
즉 반환할게 없다이다
public static void hello() {
System.out.println("안녕하세요~~");
}
이렇게 코드를 작성해 볼수 있는데 이제 이 메서드를 main메서드 에서 호출해볼 거다 참고로 main도 메서드이다
그래서 호출을 하는데 호출을 하지 않고 실행을 하면 아무것도 출력되지 않는다.
그래서 메인 메서드에서 이 메서드를 호출해주는데 호출 방법은
public static void main(String[] args) {
hello();
}
이렇게 호출하면 콘솔에는 "안녕하세요~~"가 출력될 것이다.
두 번째인 입력o 출력x 를 보게되면
public static void func02(int a) {
System.out.println("a= "+a);
}
이런 코드를 작성할 수 있는데 앞전에 입,출력없는 메서드에 매개변수만 넣어주었다.
이 메서드를 main메서드에서 호출하면 에러가 날 것이다.왜냐하면 매개변수가 주어져야 작동이 되는데
매개변수를 넣어주지 않았기 떄문이다.
public static void main(String[] args) {
func02(10);
}
이렇게 넣어주면 콘솔창에는 "a= 10"이라고 나오게 될 것이다.
세 번째로 입력 x 출력o인 메서드를 보겠다.
public static int func03(){
System.out.println("Hi");
return 100;
}
public static void main(String[] args) {
System.out.println("main: "+func03()); //콘솔에 출력하는 첫번째 방법
int num = func03(); // 두번째 방법
System.out.println("num= "+num);
}
}
보시다시피 매개변수는 없고 반환타입인 int가 작성되어있다.
이 메서드를 main메서드에서 호출하면 첫 번째 호출 같은 경우에는 "로그1" "main: 100"이 출력될 것이다.
두 번째 호출 같은 경우에는 메서드를 변수에 저장하는데 저장하기 전에 호출이 먼저 된다 왜냐하면 대입연산자가 우선순위가 낮기 때문이다. 호출을 하면 "로그1"이라는 문구가 출력되고 num에 100이 초기화된다.
이때 num을 출력해주지 않는다면 100은 콘솔창에 출력되지 않을 것이다.
여기서 보면 return이라는 문구가 있는데 이렇게 출력을 해야하는 메서드 즉 void값이 아닌 다른 값이 온다면
꼭 return을 해줘야 한다.
마지막으로 입렵o 출력o인 메서드를 보겠다.
public static double func04(int a, int b){
// double avg=(a+b)*1.0/2;
// return avg;
return (a+b)*1.0/2;
}
public static void main(String[] args) {
System.out.println(func04(10, 11));
}
매개변수를 2개 받는데 메서드의 매개변수는 몇개든 상관이 없다 대신 출력은 1개거나 0개 이여야한다.
간단한 코드를 작성해봤는데
main메서드에서 10,11을 func04매개변수로 넘겨준다.
func04메서드는 매개변수를 받아 평균을 구해준다. 그리고 그 값을 다시 func04를 호출했던 곳으로 돌려준다.
주석처리한 것처럼 작성할 수도 있는데
간단하게 바로 return문 뒤에 작성할 수 있다 둘이 똑같은 거다.
이처럼 메서드를 사용하는 이유는
- 코드의 재사용
- 개발비용절감
- 개발시간단축
- 유지보수 용이
이런 이유가 있다.