메소드 (=함수 / 재사용성이 높아 효율적으로 관리해주는 것)
- 메소드는 1가지 일만 한다.
- 기능 범위는 관련된 코드로 지정한다.
메소드란 하나의 기능을 하는 코드의 묶음단위
-- 메소드가 하는 일에 따라 파라미터(인자)가 필요할 수도 있다.
-- 또한, 처리 결과를 반환 하거나 하지 않을 수도 있다.
동일한 기능의 코드가 여러 번 중복되어 있을 경우,
해당 코드를 수행하는 기능을 한 번만 만들어두면 편리하다.
public class App {
// add 메소드 정의
public static void add() {
// add 메소드가 하는 일
System.out.println(1 + 3);
}
public static void main(String[] args) {
//System.out.println( 1 + 3 );
add(); // add 호출(실행)
add(); // add 호출(실행)
add(); // add 호출(실행)
add(); // add 호출(실행)
}
}
이렇게 기능단위로 코드를 분리해 두는 것을 “메소드” 라고 한다.
위에는 메소드를 정의한것 (나 이런거 쓸거야)
밑에는 메소드를 호출하는 것
메소드 정의 규칙
“안녕하세요?” 만 출력하는 메소드 만들고 여러 번 호출해보기
public class App {
public static void sayHello() {
System.out.println("안녕하세요?");
}
public static void main(String[] args) {
sayHello();
sayHello();
sayHello();
}
}
1 + 1만 계산하는 메소드를 만들고 여러 번 호출(실행)해보기
public class App {
public static void printAddResult() {
System.out.println(1 + 1);
}
public static void main(String[] args) {
printAddResult();
printAddResult();
printAddResult();
}
}
메소드 실행에 필요한 데이터(파라미터)가 있을 경우,
메소드를 호출(실행)할 때 데이터를 반드시 전달해야 한다.
public class App {
public static void printHello(String name) {
System.out.println(name + "씨, 안녕하세요?");
}
public static void main(String[] args) {
printHello("스타크"); // String name에 "스타크" 할당
printHello("헐크"); // String name에 "헐크" 할당
printHello("그루트"); // String name에 "그루트" 할당
}
}
반환하는 메소드 return
메소드 반환은 메소드를 호출(실행)한 라인에 결과를 돌려준다는 의미
Method Return : Method가 처리한 결과를 반환
값이 반환되면 호출자에게 할당된다.
메소드의 반환타입이 void 일 경우
아무것도 반환하지 않는 메소드가 한다.
반환타입이 int인 경우
정수형(int)을 반환하는 메소드가 되며, return 이라는 키워드가 메소드 가장 마지막에 작성되어야 한다.
반환타입이 double인 경우
부동소수점형(double)을 반환하는 메소드가 되며, return이라는 키워드가 메소드 가장 마지막에 작성되어야 한다.
즉, 반환타입이 void가 아닌 경우
항상 작성된 자료형으로 반환하는 메소드가 되며 반드시 return 키워드가 메소드 가장 마지막에 작성 되어야 한다.
예 >
public class App {
public static int getMultiply(int num, int time) {
return num * time;
}
public static void main(String[] args) {
getMultiply(10, 4);
}
}
// 위 코드에서 getMultiply(10, 4); 영역이 메소드를 호출하므로
// return num * time; 영역에서 반환하는 값은
// getMultiply(10, 4); 영역으로 40이라는 데이터를 반환하게 된다.
public class App {
public static int getMultiply(int num, int time) {
return num * time;
}
public static void main(String[] args) {
int result = getMultiply(10, 4);
System.out.println(result);
}
}
// 즉, getMultiply(10, 4)의 값을 알고 싶다면
// int result = 영역처럼 값을 할당 받는 코드가 반드시 필요하다.
=> 메소드는 하나의 값만 반환시킬 수 있다.