Q1. 숫자를 곱해서 반환시키는 함수 만들기
public class Method{
//Overriding
// - 똑같은 메소드를 여러개 만드는 방법
/**
* 숫자를 곱해서 반환시키는 함수
* @param number 곱할 숫자 10
* @param times 곱할 횟수 5
* @return 10 * 10 * 10 * 10 * 10
*/
public static int multiplication(int number, int times) {
int result = 1;
for(int i =0; i<times; i++) {
// i = 0, 1, 2, 3, 4 총 5번 반복.
result *= number;
}
return result;
}
public static void main(String[] args) {
int multiplicationResult = multiplication(10, 5);
System.out.println(multiplicationResult);
}
}
오버로딩
-> 메소드에서만 중복생성을 허락하는 경우가 있다.
: 파라미터의 타입과 개수가 다를 때만 가능!
Q2. 제곱수 출력하는 함수 만들기
public class Method{
public static int multiplication(int number) {
return number*number;
}
public static void main(String[] args) {
int multiplicationResult = multiplication(10, 5);
System.out.println(multiplicationResult);
int result = multiplication(10);
System.out.println(result);
int result2 = multiplication(5);
System.out.println(result2);
int result3 = multiplication(100000,2);
System.out.println(result3);
}
}
자 여기서 뭐가 문제일까?
오버플로우
마지막이 답이 틀리다!
오버플로우가 발생!!
public class Method{
//Overriding
// - 똑같은 메소드를 여러개 만드는 방법
public static long multiplication(long number) {
return number*number;
}
/**
* 숫자를 곱해서 반환시키는 함수
* @param number 곱할 숫자 10
* @param times 곱할 횟수 5
* @return 10 * 10 * 10 * 10 * 10
*/
public static long multiplication(long number, long times) {
long result = 1;
for(int i =0; i<times; i++) {
// i = 0, 1, 2, 3, 4 총 5번 반복.
result *= number;
}
return result;
}
public static void main(String[] args) {
long multiplicationResult = multiplication(10, 5);
System.out.println(multiplicationResult);
long result = multiplication(10);
System.out.println(result);
long result2 = multiplication(5);
System.out.println(result2);
long result3 = multiplication(100000,2);
System.out.println(result3);
}
}
int에서 long으로 바꾸면 된다!
main에서 multiplication(10)을 실행함.
long multiplication(10)이 됨.
return multiplication(number,2)가 실행함.
-> 파라미터가 2개이기 때문에 본인을 호출하지 않는 것임.
무한굴레~
- 디버깅
초록줄부터 실행할 차례이다.
method클래스에서 main을 실행하고 있는데, 30번째 줄에서 멈췄다
함수가 함수를 부르면 스택이 하나 쌓임.
method 클래스에서 multiplication을 실행하고 있는데,
8번라인을 실행할 차례이다.
number라는 파라미터의 값이 10이다.
-> 8번 라인은 multiplication을 반환하는 것.(return = 할당하는 연산자와 같음)
반환 되어서 Pop됨
-> multiplication이 100이라는 숫자를 반환시켰다.
'KT DS' 카테고리의 다른 글
[KT DS 보강] Primitive와 Reference (0) | 2025.03.17 |
---|---|
[KT DS 보강] 메소드 기초 (0) | 2025.03.10 |
[KT DS] Package와 Import와 접근 제어자 (0) | 2025.02.06 |
[KT DS] 클래스 (0) | 2025.02.06 |
[KT DS 25기] 메소드 (1) | 2025.02.04 |