1. 개론
public static void sayHello( ) { // 주로 동작과 관련된 개념으로 동사로 변수를 정의
System.out.println("안녕하세요? 메소드입니다."); // 1. 메소드 정의
}
public static void main(String[] args) {
// Method 호출
System.out.println("메소드 호출 전");
sayHello(); // 2. 메소드 호출
System.out.println("메소드 호출 후"); // 3. 호출 메소드 출력
}
※ 메소드는 메인영역 밖에서 정의하고 메인영역에서 호출 및 출력을 함
2. 전달값이 있는 메소드
public static void power(int number) { // number(Parameter, 매개변수) 라는 정수를 받음
int result = number * number; // 함수 정의
System.out.println(number + " 의 2 승은 " + result); // 함수를 사용하면 다음과 괕이 출력
}
// 전달값이 두 개 이상인 경우 (세 제곱수 구하기)
public static void powerByExp(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) { // exponent 를 0 ~ 전달값-1 만큼 실행
result *= number; // 처음은 2*2, 다음은 거기에 한 번 더 *2
}
System.out.println(number + " 의 " + exponent + " 승은 " + result);
}
public static void main(String[] args) {
// 전달값, Parameter
// 2 -> 2 * 2 = 4
// 3 -> 3 * 3 = 9
// Argument, 인수
power(2); // 2 * 2 = 4
power(3); // 3 * 3 = 9
powerByExp(2, 3); // 2 * 2 * 2 = 8
powerByExp(3, 3); // 3 * 3 * 3 = 27
powerByExp(10, 0); // 1
}
※ 메소드에서 출력을 정의했으므로 입력만 하면 바로 출력값으로 반환
3. 반환
// 호텔 전화번호
public static String getPhoneNumber() { // void 는 반환값이 없을 때 사용,
String phoneNumber = "02-1234-5678";
return phoneNumber;
}
// 호텔 주소
public static String getAddress() {
return "서울시 어딘가";
}
// 호텔 엑티비티
public static String getActivities() {
return "볼링장, 탁구장, 노래방";
}
public static void main(String[] args) {
// 반환값, Return
String contactNumber = getPhoneNumber();
System.out.println("호텔 전화번호 : " + contactNumber);
String address = getAddress();
System.out.println("호텔 주소 : " + address);
System.out.println("호텔 엑티비티 : " + getActivities());
}
※ 반환값을 정의하고 메인영역에서 출력 선언
4. 전달값과 반환값이 동시에 있는 경우
// public static void power(int number) {
// int result = number * number;
// System.out.println(number + " 의 2 승은 " + result);
// }
public static int getPower(int number) {
int result = number * number;
return result;
// return number * number; 로 줄여도 상관 없음
}
// // 전달값이 두 개 이상인 경우 (세 제곱수 구하기)
// public static void powerByExp(int number, int exponent) {
// int result = 1;
// for (int i = 0; i < exponent; i++) {
// result *= number;
// }
// System.out.println(number + " 의 " + exponent + " 승은 " + result);
// }
public static int getPowerByExp(int number, int exponent) {
int result = 1; // ctrl + alt + l 하면 인덴트 자동정렬
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
// 전달값과 반환값이 같이 있는 메소드
int retVal = getPower(2); // retVal 에 받는다
System.out.println(retVal); // 2 * 2 = 4
retVal = getPower(3);
System.out.println(retVal); // 3 * 3 = 9
retVal = getPowerByExp(3, 3);
System.out.println(retVal); // 3 * 3 * 3 = 27
System.out.println(getPowerByExp(2, 4)); // 2의 4승 = 16
}
5. 오버로딩
public static int getPower(int number) {
int result = number * number;
return result;
}
// public static int getPowerStr(String strNumber) { // "4"와 같은 문자열로 받는 메소드 인 경우는?
// int number = Integer.parseInt(strNumber); // 문자열에서 정수 추출
// return number * number;
// }
public static int getPower(String strNumber) { // str을 지우면?
int number = Integer.parseInt(strNumber);
return number * number;
}
public static int getPowerByExp(int number, int exponent) {
int result = 1; // ctrl + alt + l 하면 인덴트 자동정렬
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
// 메소드 오버로딩 (메소드 여러개 정의)
// 같은 이름의 메소드를 여러 번 선언
// 조건1. 전달값의 타입이 다르거나
// 조건2. 전달값의 갯수가 다르거나 (예, 앞은 정수로 받는데 뒤는 실수로 받으면 오버로딩 불가)
System.out.println(getPower(3)); // 3 * 3 = 9
// System.out.println(getPowerStr("4"); // 원래 리턴값 출력
System.out.println(getPower("4")); // 4 * 4 = 16, 메소드 오버로딩 된 결과
}
6. 메인 메소드
public static void main(String[] args) { // 이게 바로 메인메소드, 처음 진입 부분, 반환값 없음, 전달값은 문자열 여러개
for (String s : args) {
System.out.println(s);
}
// Edit configurations 활용해서 입력값 전달하여 메인메소드 호출 방법
// 도서관리 기능
// 1. 도서 조회
// 2. 도서 대출
// 3. 도서 반납
if (args.length == 1) {
switch (args[0]) {
case "1":
System.out.println("도서 조회 메뉴입니다.");
break;
case "2":
System.out.println("도서 대출 메뉴입니다.");
break;
case "3":
System.out.println("도서 반납 메뉴입니다.");
break;
default:
System.out.println("잘못 입력하셨습니다.");
}
} else {
System.out.println("사용법) 1~3 메뉴 중 하나를 선택하세요.");
}
}
※ 메소드는 같은 기능을 하는 동작에 대하여 코드를 단순화 하기 위해 사용 (함수를 가져오면 코드행을 줄임)
※ 메소드의 범위는 선언된 영역 안에서만 기능함(지역변수), 외부에서 기능하기 위해서는 전달값으로 정의하여 불러오기
※ 프로그램 디렉토리 영역의 current file누르면 나오는 Edit configurations에서 입력값을 직접 전달하여 메인메소드 호출 가능
'Development' 카테고리의 다른 글
(Java) Chapter5. Array (0) | 2023.01.06 |
---|---|
(Java) Chapter4. 제어문 (0) | 2023.01.04 |
(Java) Chapter3. 문자열 (0) | 2023.01.04 |
(Java) Chapter 1 환경설정 및 자료형 (0) | 2023.01.03 |