우주코딩
메서드, 메서드 문법, 메서드 사용법, 메서드의 활용 본문
메서드(method) = 함수 (function)
static 은 static 변수끼리 쓸 수 있다
메서드 -명령어(소스코드)를 관리하기 쉽게 기능 단위로 묶어놓은 블럭
int plus(int a,b) {
int sum = a + b;
return sum;
}
[메서드 정의 (method definition)]
plus - 메서드 명
a,b - 파라미터(parameter)
int - 리턴 타입
{} - 메서드 몸체 (method body)
int result = plus(100,200);
[메서드 호출(method call)]
plus - 메서드 명
100,200 = 아규먼트 (argument);
result - 리턴값을 받을 변수
메서드 문법
[리턴값의 타입] 함수명(파라미터선언, ...) {명령어들}
- 리턴 값(return value)의 타입?
=> 함수 블록에 들어있는 명령어를 수행 완료한 후
그 결과로 놓이는 값의 타입. - 파라미터(parameter) 선언?
=> 함수 블록을 실행할 때 외부로부터 받은 값을 저장할 변수 선언.
1) 명령어 블록을 실행할 때 값을 넘겨주지 않고 결과도 넘겨 받지 않는다.
void 메서드명() {
문장1;
문장2;
}
2) 명령어 블록을 실행할 때 값을 넘겨준다. 그러나 결과는 받지 않는다.
void 메서드명(변수선언1, 변수선언2, ...) {
문장1;
문장2;
}
3) 명령어 블록을 실행할 때 값을 넘겨주지 않는다. 결과는 받는다.
리턴타입 메서드명() {
문장1;
문장2;
}
4) 명령어 블록을 실행할 때 값을 넘겨주고 결과를 받는다.
리턴타입 메서드명(변수선언1, 변수선언2, ...) {
문장1;
문장2;
}
메서드를 사용하는 방법
[리턴값을 받을 변수] = 메서드명(아규먼트);
- 아규먼트(argument)?
- 메서드 블록에 들어 있는 명령을 실행하기 위해 넘겨주는 값
즉 파라미터 변수에 넘겨주는 값
- 파라미터 변수의 타입과 개수와 순서에 맞게 값을 넘겨줘야 한다.
만약 변수의 타입과 값의 타입이 다르면 컴파일 오류!
만약 변수의 개수와 값의 개수가 다르면 컴파일 오류!
변수 선언 순서와 값의 순서가 다르면 컴파일 오류! - 리턴값을 받을 변수
- 메서드 블록을 실행한 후 리턴되는 값을 받을 변수이다.
- 메서드가 값을 리턴한다 하더라도 값을 받기 싫으면 변수를 선언하지 않아도 된다.
그러면 리턴 되는 값은 버려진다.
- 값을 리턴하지 않는 메서드에 대해 변수를 선언하면 컴파일 오류!
파라미터의 타입, 개수, 순서가 일치해야 한다.
메서드 활용
- 메서드가 리턴한 값을 한 번만 사용할 경우 쓸데없이 로컬 임시 변수를 만들지 않는다. 사용할 곳에 바로 메서드 호출 코드를 둔다.
static void hello(){
sysout("Hello");
}
System.out.println(hello());
- 앞의 예제와 마찬가지로 리턴값을 한번만 사용한다면, 사용할 곳에 메서드 호출 코드를 둬라
리팩토링 기법 중에서 "replace temp with query"라고 부른다.
static String hello(String name, int age) {
String retVal = String.format("%d살 %s님을 환영합니다!", age, name);
return retVal;
}
System.out.println(hello("홍길동",20));
'Project' 카테고리의 다른 글
제네릭 적용 (0) | 2021.08.22 |
---|---|
유스케이스, 추상클래스, 스택 사용하기 (0) | 2021.08.22 |
Composite 디자인 패턴 적용하기 (0) | 2021.08.03 |
클래스 문법 활용하기, 패키지 만들기 (0) | 2021.07.16 |
메서드 활용하기, 로컬 변수와 전역 변수 (0) | 2021.07.13 |
Comments