f(x) = x + 1
f : 함수이름
x : 매개변수
x + 1 : 식
f(1) = 2
f(5) = 6
f(10) = 11
특정 기능(=연산)을 그룹화해서 재사용하기 위한 단위
public staitc void 메서드 이름() {
...수행할 연산식...
}
정의된 메서드는 다른 메서드를 구성하는 {...}안에서 다음의 형식으로 사용될 수 있으며, 이를 메서드를 호출한다라고 한다.
메서드 이름();
public class Main01 {
public static void main(String[] args) {
// 여러번 사용이 가능하다.
f();
f();
}
public static void f() {
int x = 100;
int y = x + 1;
System.out.println(y);
}
}
result
101
101
java 프로그램의 메서드(=함수)는 자신이 실행되는 데 필요한 조건값을 메서드 이름 뒤의 괄호안에서 변수 형태로 선언한다. 이를 메서드 파라미터라고 한다.
public static void 메서드이름(변수형 변수이름) {
L. 메서드 파라미터
}
메서드가 연산을 수행하는 데 두 개 이상의 파라미터가 필요하다면 콤마(,)로 구분하여 선언할 수 있다.
public static void 메서드이름(변수형 변수이름, 변수형 변수이름, 변수형 변수이름) {
{
메서드를 정의하면서 파라미터가 명시되어 있다면 해당 메서드를 호출하면서 파라미터를 전달해주어야 한다.
메서드이름(값1, 값2, 값3);
L. 파라미터 갯수 만큼
public class Main02 {
public static void main(String[] args) {
f1(100);
f1(200);
plus(2 , 5);
minus(10, 5);
}
public static void minus( int x, int y ) {
System.out.println(x - y);
}
public static void f1( int a ) {
int b = 10;
System.out.println(a + b);
}
public static void plus( int x, int y ) {
System.out.println(x + y);
}
}
-> 메서드들끼리는 순서가 중요하지 않다
but main 메서드가 맨위에 있는 것이 좋다.
result
110
210
7
5
메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을 "리턴"이라고 하며, 반환되는 값을 "리턴 값"이라고 한다.
메서드 안에서 값을 리턴하기 위해서는 "return"이라는 키워드가 사용된다.
값을 리턴하는 메서드는 선언시에 "void"라는 키워드 대신, 리턴하는 값에 대한 변수형이 명시된다. void는 리턴 값이 없다는 의미다.
public static 리턴형 메서드 이름(변수형 파라미터, ...) {
return 리턴값; -> void대신 리턴형 작성
}
public class Main03 {
public static void main(String[] args) {
// 메서드의 리턴값을 변수에 저장
int z = f1(5);
System.out.println( z );
boolean result = f2(10);
System.out.println( result );
// 리턴값을 출력에 사용
System.out.println( f2(10) );
}
public static int f1( int x ) {
int y = x + 1;
return y; // 값을 f1(5)에 대입한다.
}
public static boolean f2( int x ) {
if( x > 5 ) {
return true;
} else {
return false;
}
}
}
-> 일반 메서드들끼리도 호출 가능하다.
result
6
true
true
f1(x) = x + 1
f2(y) = f1(y) + 10
k = f2(5)
-> f1(5) + 10
-> 5 + 1 + 10
-> 16
package method;
public class Main04 {
public static void main(String[] args) {
System.out.println( f2(100) );
}
public static int f1( int x ) {
return x + 1; // 연산을 바로 리턴 가능
}
public static int f2( int x ) {
// 다른 메서드의 호출
return f1(x) + 1;
}
}
-> f2(100) → f2(int x) → f1(x) → f1(int x) → f1(x) → f2(100)
result
102