public static int add(int a, int b) {
// 메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름(매개변수 목록){
메서드 본문
}
메서드는 이름을 통해서 호출.
매개변수가 값을 반환하지 않는 경우에는 void를 사용.
선언 : ex) public static void printHeader()
호출 : printHeader();
반환타입이 없으므로 메서드만 호출하고 반환 값을 받지 않음.
매개변수가 없는 경우에는 매개변수를 비워두고 정의하면 된다.
선언 ex) public static void printHeader()
호출 ex) printerHeader()
모든 메서드는 항상 return을 호출해야함.
반환 타입 void의 경우에는 예외로 printFotter()와 같이 생략해도 됨
자바는 반환 타입이 없는 경우에는 return을 마지막줄에 넣어주고 return을 만나면 해당 메서드는 종료
반환타입이 있는 경우에는 반드시 값을 반환해야하고 반환은 return을 사용해서 값을 반환한다.
** 메서드는 반환 값이 있을 때, 반환이 없을 때(void) 이러한 경우를 잘 생각해서 이해해보자.
메서드 반환 값을 받았지만 사용하지 않는 것도 가능하다
예를 들면
int sum = add(1,2) 이런식으로 사용하는 경우에는 메서드 add를 호출해서 값을 받아서 sum에 저장하게 됨.
만일 메서드만 호출하고 반환 값을 사용하지 않는 경우라면,
add(1,2)와 같이 호출만 하고 호출 결과를 변수에 담지 않으면 된다.
자바의 중요한 대원칙!
** 자바는 항상 변수의 값을 복사해서 대입한다 **
자바는 메서드 이름 뿐만 아니라 매개변수 정보를 함께 사용해서 메서드를 구분한다.
때문에 이름이 같고, 매개변수가 다른 메서드를 정의할 수 있는데 이를 메서드 오버로딩(Overloading)이라 한다.
오버로딩
add(int a, int b)
add(int a, int b, int c)
add(double a, double b)
오버로딩 규칙
메서드 이름이 같아도 매개변수의 타입 및 순서가 다르면 가능하다. (반환 타입은 인정하지 않음)
메서드 시그니처(method signature)
메서드 시그니처 = 메서드 이름 + 매개변수 타입(순서)
자바에서 메서드를 구분할 수 있는 고유한 식별자나 서명을 뜻함. ㅡ> 메서드를 구분할 수 있는 기준
오버로딩 실패
int add(int a, int b)
double add(int a, int b)
메서드 이름이 같이도 메서드 시그니처가 다르면 다른 메서드로 간주함
반환 타입은 시그니처에 포함되지 않기 때문에 위의 오버로딩을 실패한 것. ㅡ> 반환 타입을 제외하면 add(int a, int b)