메서드가 호출되면 작업을 수행한 후에 반드시 호출한 위치로 돌아감!
=> 이 때, 호출한 곳으로 전달하는 값을 리턴값(Return value) 라고 함.
=> 단, 리턴 타입이 void 인 메서드는 return 문을 생략해도 되고 리턴 값 없이 return 문만 기술할 수 있다.
=> 메서드 내에서 return 문을 만나면 즉시 메서드를 종료하고 돌아감
=> if문 등의 조건식을 사용하여 return 문을 실행 할 경우 반드시 어떤 경우에도 return 문이 실행되도록 조건식을 작성해야함.
main() 메서드는 자바에서 유일하게 호출하지 않아도 프로그램 실행 시점에서 자동으로 호출되는 메서드.
=> main()메서드를 자바 프로그램의 시작점(Starting point)이라고 함.
메서드 호출 시 메서드 매개변수와 일치하는 타입 및 개수의 데이터 전달이 필수! (메서드 호출 형태로 정의 형태가 일치해야함)
호출하는 메서드 : Caller 호출 당하는 메서드 : Worker
< 메서드 호출 기본 문법 >
1.리턴값이 없는 경우
메서드명([데이터...])
2.리턴값이 있는 경우
1) 데이터타입 변수명 = 메서드명([데이터..]);
=>리턴되는 데이터를 변수에 저장 할 경우
2) System.out.println(메서드명([데이터...]));
=>리턴되는 데이터를 출력하거나 직접 연산에 사용하는 경우
3. 파라미터만 있고, 리턴값은 없는 메서드 호출
System.out.println("동생아! 돈을 줄테니 과자를 사먹어라.");
//=> 메서드 호출 시 전달할 데이터는 메서드명 뒤의 소괄호 내에 기술
sister_3(2000);
3. 파라미터만 있고 ,리턴값은 없는 메서드 정의
= > 파라미터가 있으므로 메서드 선언부 소괄호() 안에 외부로부터 호출 시 전달받는 데이터를 저장할 변수 (매개변수) 선언
=> 리턴값은 없으므로 리턴타입 부분을 void로 설정
} // main () 메서드 끝
public static void sister_3(int money) {
System.out.println("동생 : 오빠가 준 돈 " + money + "원");
}
} // Ex2 클래스 끝
int.money는 sister_3 변수의 로컬 변수다.
파라미터로 선언 된 int형 변수 money에 메서드 호출 시 전달 된 값 저장 됨
=>sister_3(2000)호출 시 int money = 2000 과 동일한 코드로 취급 됨
int - int
데이터 타입이 일치해야 한다.
문제
if문을 사용하여 잔돈이 남았을 때, 잔돈을 출력하지 않고 메서드 종료 //만약, 잔돈이 남지 않았을 경우 "잔돈 0원"출력.
public static void sister_3(int money) {
System.out.println("동생 : 오빠가 준 돈 " + money + "원");
money -= 1000;
if(money>0) {
return;
}
System.out.println("동생 : 잔돈 " + money + "원");
}
} // Ex2 클래스 끝
현재 수행중인 메서드를 종료하고 빠져나가기 위해서는
특정 조건일 때 return 문이 실행되도록 해야 한다!
문제
문자열 1개를 전달하면 해당 문자열을 출력하는 print() 메서드 호출
print("아이티윌 부산교육센터");
}
public static void print(String str) {
System.out.println(str);
}
}
문자열을 1개 전달 받아 해당 문자열을 출력하는 print() 메서드 정의외부로부터 전달받은 문자열을 저장하기 위한 변수를 소괄호() 안에 선언
문제
정수 1개를 전달하면 해당 정수에 대해 "홀수", "짝수" 판별하는 checkNumber() 메서드 호출
1. 메인 안에 checkNumber()을 넣어준다.
아무 숫자나 넣어줌.
checkNumber(2);
2. 메인 끝, 클래스 안에 print 메서드를 넣어줌. 정수니까 int
public static void checkNumber(int a)
1번의 숫자 2가 2번에 들어감!
if(a%2==0) {
System.out.println("짝수");
}else {
System.out.println("홀수");
}
}
=> 짝수가 출력된다.
4. 파라미터도 있고, 리턴 값도 있는 메서드 호출 (2번 유형 + 3번 유형)
System.out.println("동생아 1만원을 줄테니 내 새우깡도 사줘");
String snack = sister_4(10000);
public static String sister_4(int money) {
System.out.println("동생 : 오빠가 준 돈 " + money + "원");
money -= 1000;
System.out.println("동생이 새우강 사먹고" + money + "가 남음");
//return "새우강", "물"; // 주의! return 문 뒤의 값은 하나만 기술!
return "새우깡";
}
} // Ex2 클래스 끝
4. 파라미터도 있고 리턴값도 있는 메서드 정의
문제
정수 1개를 전달 하면 해당 정수에 대해 "홀수", "짝수"를 판별하고 ,
판별 결과 문자열을 리턴하는 checkNumber2() 메서드 호출
String result = checkNumber2(1);
System.out.println("판별 결과 : " + result);
}main
public static String checkNumber2(int b) {
if(b%2==0) {
return "짝수";
}else {
}return "홀수";
}
}class
=> if문과 else if문 내에서 직접 리턴하지 않고, 리턴 데이터를 별도의 변수에 저장만 한 뒤, if 문 종료 후 return 실행
5. 파라미터가 2개 이상인 메서드 호출
String snack = "새우깡";
int myMoney = 1000;
System.out.println("동생아! 새우깡이랑 1000원 줄테니 쿠쿠다스 바꿔와");
String mySnack = sister_5(1000,"생우깡"); //int, String 형태의 데이터 전달.
System.out.println("동생이 바꿔다 준 것 : " + mySnack);
}
public static String sister_5(int money, String snack){
System.out.println("오빠가 준 돈 : " + money + "원");
System.out.println("오빠가 준 과자 : " + snack);
System.out.println(snack + "을 쿠쿠다스로 교환했다!");
snack = "쿠쿠다스";
return snack;
}
}
5. 파라미터가 2개 이상인 메서드 정의
=> 전달되는 데이터가 int, Stirng 형태이므로 파라미터 선언 순서도 int, String 순서로 선언해야 한다!
문제
파라미터 2개 이상인 메서드 호출 연습
정수2개를 전달하면 두 정수의 합을 리턴하는 메서드를 호출하고리턴 값을 출력 (ex. 10, 20 전달 시 10 + 20의 결과인 30이 리턴)
int result = sum(10,20);
System.out.println("계산 결과 = " + result);
} main
public static int sum(int a, int b) {
System.out.println("숫자1 = " + a);
System.out.println("숫자2 = " + b);
int sum = a + b;
return a + b;
}
} class
연산자 문자 1개와 정수 2개를 전달하면 두 정수에 대한 어떤 연산을 수행 한 후
결과 값을 리턴하는 메서드를 호출하고 리턴되는 값을 출력
ex) '+', 10, 20 전달 시 10 + 20 결과인 30 리턴
ex) '-', 10, 20 전달 시 10 - 20 결과인 -10 리턴
int result2 = operation('+',10,20);
System.out.println("연산 결과 =" + result2);
result2 = operation('-',10,20);
System.out.println("연산 결과 =" + result2);
result2 = operation('-',10,20);
System.out.println("연산 결과 =" + result2);
} main
public static int total(int num1, int num2, char c) {
if(c == '-') {
return num1 - num2;
}else if(c == '+') {
return num1 + num2;
}else {
//잘못된 연산자가 입력되었을 경우 오류메시지 0 출력 후 리턴
System.out.println("연산자가 올바르지 않습니다.");
return 0;
}
}
} class
<다른 방법>
int result =0; (연산 값을 저장할 변수)
int result = 0; // 연산 결과를 저장 할 변수
if(c == '-') {
return num1 - num2;
}else if(c == '+') {
return num1 + num2;
}else {
//잘못된 연산자가 입력되었을 경우 오류메시지 0 출력 후 리턴
System.out.println("연산자가 올바르지 않습니다.");
return result;
// 주의! 변수 값을 리턴하는 경우 반드시 변수값 초기화 필수!
}
}
//메서드 정의
public void study(String subjectName) {
//전달 받은 파라미터 값을 사용하여 출력
System.out.println(subjectName + "과목 공부!");
}
'BackEnd > Java' 카테고리의 다른 글
0907 JAVA - class 정의 (0) | 2022.09.07 |
---|---|
0831 JAVA - 클래스 정의 (0) | 2022.08.31 |
0826 JSP - JavaBean, 회원가입 로그인 페이지 만들기 (0) | 2022.08.26 |
0824 JAVA - 클래스와 객체 , 인스턴스 (0) | 2022.08.24 |
0818 JAVA - WHILE 문 ~ DO WHILE 문 (0) | 2022.08.18 |