public static void main(String args[]) {
// 배열 초기화
for (int i = 0; i < 10; i++) {
numArr[i] = (int) (Math.random() * 10);
}
// 배열출력 (중복코드)
for (int i = 0; i < 10; i++) {
System.out.printf("%d", numArr[i]);
}
System.out.println();
// 배열출력 (중복코드)
for (int i = 0; i < 10; i++) {
System.out.printf("%d", numArr[i]);
}
System.out.println();
}
// 배열출력 메서드
static void printArr(int[] numArr) {
for (int i = 0; i < 10; i++) {
System.out.printf("%d", numArr[i]);
}
System.out.println();
}
public static void main(String args[]) {
// 배열 초기화
for (int i = 0; i < 10; i++) {
numArr[i] = (int) (Math.random() * 10);
}
// 배열출력 메서드 호출
printArr(numArr);
// 배열출력 메서드 호출
printArr(numArr);
}
값(입력)을 받아서 처리하고 결과를 반환(출력)
메서드 장점
코드의 중복을 줄일 수 있다.
코드의 관리가 쉽다.
코드를 재사용할 수 있다.
코드가 간결해서 이해하기 쉽다.
메서드 작성
반환타입 메서드명 (타입 변수명, 타입 변수명, ...)
{
// 메서드 호출 시, 수행될 코드
}
메서드 = 선언부 + 구현부
반복적으로 수행되는 여러 문장을 메서드로 작성
하나의 메서드는 한 가지 기능만 수행하도록 작성
지역변수(lv) : 메서드 내에 선언된 변수
매개변수(입력) : 0 ~ n개
반환값(출력) : 0 ~ 1개 (1개 이상일 경우 배열 or 객체)
메서드 호출
메서드명(값1, 값2, ...);
public static void main(String[] args) {
// 3, 5는 인수 (argument, 원본)
int result = add(3, 5); // 메서드 호출
}
// x, y는 매개변수 (parameter, 복사본)
int add(int x, int y) {
int result = x + y;
return result;
}
return 문
실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
// 구구단을 프린트하는 메서드
void printGugudan(int dan) {
if ( !(dan >= 2 && dan <= 9) ) {
// dan이 2 ~ 9가 아닌 경우, 호출한 곳으로 그냥 되돌아간다.
return;
}
for (int i = 1; i <= 9; i++) {
System.out.printf("%d * %d = %d%n", dan, i, dan * i);
}
// 반환타입이 void이므로 생략가능 (컴파일러가 자동추가)
// return;
}
반환타입이 void가 아닌 경우, return문 반드시 필요
int multiply (int x, int y) {
int result = x * y;
// 반환타입이 void가 아니므로 생략불가
return result;
}
// 에러 발생
int max (int a, int b) {
if( a > b ) {
return a; // 조건식이 참일 때만 실행
}
}
int max (int a, int b) {
// 모든 상황에 return문이 있어야 정상 작동
if ( a > b ) {
return a;
} else {
return b;
}
}
return 시, 메서드의 반환타입과 리턴하려는 값의 타입이 일치하거나 자동형변환 할 수 있어야한다.
int add (int x, int y) {
int result = x + y;
// 자동형변환 할 수 있는 타입들
// char result;
// byte result;
// short result;
return result;
}