나도코딩 자바 기본편_13일차(24.12.05)
#036 <메소드 오버로딩>
// 제곱 메소드
public static int getPower(int number) { → 정수 전달 getPower
int result = number * number;
return result;
// return number * number 이렇게 한 줄로 줄일 수 있음
}
public static int getPower(String strNumber) { → 문자열 전달 getPower
int number = Integer.parseInt(strNumber); → 문자의 값에서 정수 추출해 반환
return number * number;
}
// number 를 exponent 번 곱하는 메소드
public static int getPower(int number, int exponent) { → 전달값이 두 개인 getPower
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number; // result = result * number
}
return result;
}
* 메소드 오버로딩
같은 이름의 메소드를 여러 번 선언하는 것
-조건 1: 전달값의 타입이 다르거나
-조건 2: 전달값의 개수가 다르거나
-참고: 반환형만 다를 경우에는 중복 정의 불가
System.out.println(getPower(3)); → 3 * 3 = 9 (정수)
System.out.println(getPower("4")); → 4 * 4 = 16 (문자열)
System.out.println(getPower(3, 3)); → 3 * 3 * 3 = 27 (전달값 두 개)
#037 <메소드가 필요한 이유>
// 2의 2승 구하기
int result = 1;
for (int i = 0; i < 2; i++) {
result *= 2;
}
System.out.println(result); → 2 * 2 = 4
// 3의 3승 구하기
result = 1;
for (int i = 0; i < 3; i++) {
result *= 3;
}
System.out.println(result); → 3 * 3 * 3 = 27
// 4의 2승 구하기
result = 1;
for (int i = 0; i < 2; i++) {
result *= 4;
}
System.out.println(result); → 4 * 2 = 16
→ 똑같은 동작을 값만 바꿔서 계속하고 있음
→ 메소드로 만들어서 활용하면 코드 중복 줄여서 간결하게 표현할 수 있음
→ 코드 유지보수 용이함(오류 방지, 수정 편리해짐)
// 메소드 만들기
public static int getPower(int number, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
// 메소드 활용하면 아래와 같이 줄일 수 있음
// 2의 2승 구하기
System.out.println(getPower(2, 2)); → 2 * 2 = 4
// 3의 3승 구하기
System.out.println(getPower(3, 3)); → 3 * 3 * 3 = 27
// 4의 2승 구하기
System.out.println(getPower(4, 2)); → 4 * 2 = 16
// 하나의 전달값만 가진 경우(제곱 메소드)
getPower 메소드 활용해서 할 수 있음(제곱일 경우 값 하나만 넣기)
public static int getPower(int number) {
int result = number * number;
return result;
}
→ 메소드 활용하면 아래와 같이 줄일 수 있음
(메소드 내에서 다른 메소드 호출 가능)
public static int getPower(int number) {
return getPower(number, 2);
}
#038 <변수의 범위 (Scope)>
public static void methodA(int number){ → 중괄호 밖에서 사용할 때는 전달값 이용
// System.out.println(number);
// System.out.println(result);
}
public static void methodB() {
int result = 1; → 지역 변수(선언된 영역(중괄호) 내에서만 사용할 수 있는 변수)
}
public static void main(String[] args) {
int number = 3;
// System.out.println(result);
for (int i = 0; i <5; i++) {
System.out.println(i);
}
// System.out.println(i); → for문 내에서 선언된 i 는 for문(중괄호) 밖에서 사용 불가
{
int j = 0;
System.out.println(j);
System.out.println(number); → 선언된 영역(중괄호) 안에서는 출력 가능
}
// System.out.println(j); → 선언된 영역 밖에서는 출력 불가
#039 <Main 메소드>
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
// 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 메뉴 중 하나를 입력하세요.");
}
오늘의 한마디
두뇌 풀가동하느라 자꾸 배고파져서 까먹은 간식들... 기본편 강의 드디어 끝냈다! 아직 마지막 퀴즈가 남았지만 일단 오늘은 이 뿌듯함을 즐겨야지. 뒷부분 진도 나가는 동안 앞에서 배웠던 내용을 많이 까먹어서 걱정이다. 심화편 나가기 전에 블로그 정리본 다시 훑어봐야지. 진짜 어려운 부분은 아직 시작도 안 했다고 해서 덜덜 떠는 중... 그래도 외계 문물처럼 느껴졌던 인텔리제이가 이제 제법 익숙해졌다. 영타도 이제 200대 자주 나온다. 올해 안에 300 찍는 걸 목표로 하고 있다. 목표가 있다는 건 여러모로 좋은 일인 것 같다. 그러니까 계속 달려...!!!
'공부를 하자! > 나도코딩 자바 기본편' 카테고리의 다른 글
[나도코딩 자바 기본편] 14일차: 퀴즈6 (0) | 2024.12.09 |
---|---|
[나도코딩 자바 기본편] 12일차: 퀴즈5, 메소드, 전달값, 반환값, 전달값과 반환값 (0) | 2024.12.02 |
[나도코딩 자바 기본편] 11일차: 다차원 배열 순회, 아스키 코드 (0) | 2024.12.02 |
[나도코딩 자바 기본편] 10일차: 배열, 배열 순회, 다차원 배열 (0) | 2024.12.01 |
[나도코딩 자바 기본편] 9일차: 퀴즈4 (0) | 2024.11.30 |