Method 메서드
[메서드란?]
1. 작업단위로 문장들을 묶어서 이름 붙인 것.
-> 반복되는 문장들을 메서드로 작성
2. 값(입력)을 받아서 처리하고, 결과를 반환(출력)
3. 하나의 메서드는 한 가지 기능만 수행하도록 작성해야 함. (의미 있는 작업단위로 나눠야 재사용이 용이하기 때문)
4. 메서드는 반드시 클래스 내에 존재해야 함.
[메서드 장점]
코드 중복 제거, 코드 관리 용이, 코드 재사용 가능, 코드 간결(이해하기 쉬워 짐)
[메서드 = 선언부 + 구현부]
반환 타입(작업결과 출력타입) + 메서드 이름(매개변수목록 : 작업에 필요한 값들(입력)) // 선언부
메서드 호출 시 수행될 코드 // 구현부
*메서드 작업에 필요한 매개변수(입력)는 0~n개 가능
*출력은 0~1개 가능
// 여러 값을 출력 받고 싶다면 배열을 활용하거나 하나의 객체로 묶어야 함.
// 출력 값이 0인 경우 반환타입은 void
*지역변수(lv) : 메서드 영역 내에 선언 된 변수
지역변수는 메서드 안에서만 사용되기 때문에 다른 메서드에 이름이 같은 lv가 있어도 상관없음.
[메서드의 호출]
메서드 이름 (값1, 값2, ….); // 메서드를 호출하는 코드
Print99damAll( ); // void print99danAll( )을 호출
Int result = add(3, 5); // int add(int x, int y)를 호출하고, 결과를 result에 저장
void & int -> 출력
int x & int y -> 입력
*메서드는 클래스 영역에서만 정의 가능
*메서드를 호출 할 때, 작업결과가 없는 (반환타입void) 메서드는 따로 작업결과를 저장할 필요가 없지만, 작업결과가 있는 메서드를 호출할 경우에는 호출한 결과를 저장할 변수가 필요함. (변수가 없어도 됨. 변수가 없으면 호출만 되고 반환된 값을 사용할 수 없을 뿐)
[메서드의 실행 흐름]
MyMath mm = new MyMath( ); // 먼저 인스턴스를 생성한다.
long value = mm.add(1L, 2L); // add 메서드를 호출한다.
long add(long a, long b) {
long result = a + b;
return result ; //return값을 메서드를 호출한 곳으로 반환한다.
}
1. 먼저 인스턴스(객체)를 생성한다.
2. main메서드에서 메서드 add를 호출한다.
-> 인수 1L과 2L이 메서드 add의 매개변수 a, b에 각각 복사(대입)된다.
3. 메서드 add의 괄호{ }안에 있는 문장들이 순서대로 수행된다.
4. 메서드 add의 모든 문장이 실행되거나 return문을 만나면,
호출한 메서드(main메서드)로 되돌아와서 이후의 문장들을 실행한다.
-> a=1, b=2 // a+b = 3 // result = 3
-> 호출한 메서드로 되돌아와서 long value = 3
-> 3이 value에 저장 됨.
[return문]
실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
*메서드 마지막에 return문을 반드시 써야한다.
(메서드가 작업을 마친 후 작업결과를 반환해야 하기 때문에)
-> but, 반환타입이 void인 경우 생략이 가능하다.
Int max(int a, int b) {
If(a > b)
Return a; // 에러 조건식이 참일 때만 실행된다. 거짓일때 실행 될 return문이 없어서 에러 }
↓
Int max(int a, int b) {
If(a > b)
Return a; // 조건식이 참일 때만 실행된다.
Else
Return b; // 조건식이 거짓일 때 실행된다.}
-> 위처럼 조건식을 사용할 경우 true, false 모두 return문을 줘야 한다.