public static void 메서드이름(변수형 파라미터1, 변수형 파라미터2) {
.....
}
// setter는 무엇에 어떤값을 넣기 위함 → 그래서, return 이 없다. (return 없이, 원하는 작업을 하고 끝)
public void setName(String name) {
this.name = name;
}
메서드가 연산을 수행에 2개 이상의 파라미터가 필요하다면, 콤마로 구분하여 선언 가능
메서드 정의
public static void 메서드이름( 변수형 파라미터1, 변수형 파라미터2) {
.....
}
메서드 호출
메서드이름(값1, 값2);
메서드를 정의하면서 파라미터가 명시되어 있다면, 해당 메서드를 호출하면서 파라미터를 전달해주어야 한다.
public class Main03 {
// 메서드의 리턴값을 변수에 저장
int a = f1(100);
System.out.println(a);
// 리턴값을 출력에 사용
System.out.println(f2(10));
}
public static int f1(int x) {
int y = x+1;
return y;
}
public static int f2(int x) {
return x*x +1;
}
}
void
리턴값이 없다는 의미
void 타입을 사용하지 않을 경우, 반드시 return 값을 반환해야 한다
return문이 실행되면, 메소드는 즉시 종료
실행 중인 메서드를 종료하고, 호출한 곳으로 되돌아간다.
return VS break
- return: 해당 함수의 탈출 --> 메소드 즉시 종료
- break: 반복문(for, while...)의 탈출 --> while문 뒤에 추가적인 실행문이 있을 경우, break문을 사용할 수 있음
public static 리턴형 메서드이름( 변수형 파라미터1, ... , 변수형 파라미터 n) {
return 리턴값;
}
// getter의 역할은 무엇을 가져오기위함
public String getName() {
return name;
}
리턴(return)
메서드의 연산결과를 메서드 자신이 호출된 위치에 반환하는 것
메서드에 들어있는 정보를 화면에 출력하지말고, '파일에 저장 or 이메일로 전달하라' 고 명령했을 때,
해당 메서드는 파일에 저장 or 이메일로 전달 기능이 없으므로, 다른 메서드를 또 생성해서 처리를 해야한다.
이 경우는 부품으로써 메서드의 가치가 떨어진다.
그렇기 때문에 리턴값으로 해당 값을 외부로 꺼내놓고, 메서드를 사용해서 자유롭게 외부에서 활용한다.
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;
}
}
호출된 메서드(f1(x))가 값을 리턴(x+1)하는 경우, 리턴받은 값을 다른 연산(f1(x) + 1)에 사용 가능
f1(int x)이 x+1 을 return 하고,
f2(int x)가 f1(x) + 1 을 return 하므로, 이것은 x+1 + 1 을 return 하는 것과 같다.
// ① setName("옥강이") 로 함수를 호출하게 되면, private String name = null; 의 name 값이 "옥강이"라는 값을 저장
public void setName(String name) {
this.name = name;
}
// ② getName() 을 불러오면, 아까 저장해두었던 name 변수인 "옥강이"를 가져온다
public String getName() {
return name;
}
// ③ Stirng 의 변수 str 에 getName() 함수의 리턴값인 "옥강이" 를 받아서 저장
String str = getName();
System.out.println(str);
public void setName(String name) {
this.name = name;
return this;
}
private static void moveDice (ind a) {
Point cur = que.poll();
int nr = dr[a - 1] + cur.r;
int nr = dc[a - 1] + cur.c;
if (!check(nr, nc))
return;
}
void 반환타입을 return 하게 된다면, 반환값 없이 메서드문을 빠져나간다.
public class ReturnVoidTest {
// Stirng 타입
public String returnMethod(String paramValue) {
String returnValue = paramValue; // 2. returnMethod 안의 로컬 변수인 returnValue 에 "call"을 넣어 초기화
return returnValue; // 3. 값 "call" 을 반환
}
// void 타입
public void voidMethod() {
System.out.println("no return");
}
// void 타입
public static void main(String[] args) {
ReturnVoidTest rvt = new ReturnVoidTest(); // 객체화
System.out.println(rvt.returnMethod("call")); // 1. "call"을 넣어, returnMethod 호출
rvt.voidMethod(); // voidMethod 호출
}
}
class Method5_2 {
void gugudan(int dan) {
if (!(dan >= 2 && dan <= 9)) {
System.out.println(dan + "단은 없습니다.");
return;
}
System.out.println(dan + "단 시작!");
for (int i = 1; i < 10; i++) {
System.out.println(dan + "*" + i + " = " + dan * i);
}
System.out.println();
}
boolean checkMax(int x, int y) {
if (x > y) {
return true;
} else {
return false;
// return 반드시 필요합니다. 만약 없으면 조건문이 false 일 경우, void 가 아닌데 return 문이 없음으로 Error
}
}
}
class Method5_2Main {
public static void main(String[] args) {
Method5_2 method = new Method5_2();
method.gugudan(2);
method.gugudan(5);
method.gugudan(10);
method.gugudan(9);
System.out.println("method.checkMax(10, 8) = " + method.checkMax(10, 8));
System.out.println("method.checkMax(5, 9) = " + method.checkMax(5, 9));
}
}
참고: Java 메소드 :: 리턴값이 있는 메소드와 리턴값이 없는 메소드 (void와 return)
참고: 자바 초보자가 void에 대해서 질문합니다.
참고: 자바 void return 메소드 뜻부터 호출까지
참고: void와 return