자바 메소드(Java Method)
1. 메소드
- 어떤 작업을 수행하기 위한 명령문의 집합
- 여러 줄의 코드를 하나로 묶어서 표현한 형태
- 반복된느 코드를 최소화, 유지 보수에 유리
2. 메소드 기본 구조
- 접근제한자 : 메소드의 접근 범위를 설정해주는 키워드
public 어느 클래스에서나 접근 가능
private 현재 클래스에서만 접근 가능 - 리턴 타입 : 메소드 수행 결과를 어떤 타입(자료형)으로 반환할 것인지 알림
리턴 타입이 있다면 반드시 내부에 return 문을 이용하여 결과값을 반환
아무 결과 값도 반환하지 않을 경우 void 키워드 사용 (return 사용 안함) - 매개변수 : 반드시 자료형이 명시되어야 하며, 개수에는 제한이 없음 (매개변수가 없어도 됨)
3. 메소드 오버로딩 (overloading)
- 메소드의 이름은 같지만 매개변수를 다르게 하여 서로 다른 메소드를 만드는 기법
- 메소드 오버로딩 조건
① 메소드 이름이 같아야 한다.
② 매개변수의 개수 혹은 타입(자료형)이 달라야 한다.
③ 매개변수와 메소드 이름이 동일하고 리턴 타입만 다른 경우는 오버로딩이 아니다.
▶ 예제
사칙연산을 수행하는 메소드를 각각 4개 만들어보기
package onlyPractice;
public class onlyPractice {
public static void main(String[] args) {
System.out.println(add(3, 5));
System.out.println(sub(3, 5));
System.out.println(mul(3, 5));
System.out.println(div(3, 5));
}
public static int add(int num1, int num2) {
return num1+num2;
}
public static int sub(int num1, int num2) {
return num1-num2;
}
public static int mul(int num1, int num2) {
return num1*num2;
}
public static int div(int num1, int num2) {
return num1/num2;
}
}
▶ 예제
정수형 num1과 num2를 입력 받고, 문자형 op를 선언해 원하는 연산자를 넣기
num1과 num2를 op에 맞게 연산하여 최종값을 반환해주는 cal 메소드 만들기
단, 빼기를 수행할 때는 큰 수에서 작은 수 빼기
package onlyPractice;
import java.util.Scanner;
public class onlyPractice {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수1 입력 >> ");
int num1 = sc.nextInt();
System.out.print("정수2 입력 >> ");
int num2 = sc.nextInt();
char op = '-';
System.out.println(cal(num1, num2, op));
}
public static int cal(int num1, int num2, char op) {
int result = 0;
if (op == '+') {
result = num1 + num2;
} else if (op == '-') {
if (num1 > num2) {
result = num1 - num2;
} else {
result = num2 - num1;
}
} else if (op == '*') {
result = num1 * num2;
} else if (op == '/') {
result = num1 / num2;
}
return result;
}
}
▶ 예제
10에 더 가까운 수 구하기
정수형 num1과 num2를 입력 받고, 둘 중 10에 더 가까운 수를 반환하는 close10 메소드를 생성
단, 두 숫자 모두 10과의 차이가 같다면 0을 반환
※ 절댓값 계산 함수 Math.abs() 이용
package onlyPractice;
import java.util.Scanner;
public class onlyPractice {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 >> ");
int num1 = sc.nextInt();
System.out.print("정수 입력 >> ");
int num2 = sc.nextInt();
int result = close10(num1, num2);
System.out.println("10에 가까운 수 : " + result);
}
public static int close10(int num1, int num2) {
int result = 0;
if (Math.abs(10 - num1) < Math.abs(10 - num2)) {
result = num1;
} else if (Math.abs(10 - num1) > Math.abs(10 - num2)){
result = num2;
}
return result;
}
}
▶ 예제
완전 수 구하기
※ 메소드를 사용하여 코드를 생성함으로써 이미 만들어진 코드를 재사용 가능
① num2가 num1의 약수인지 확인하여 약수라면 true, 아니라면 false를 반환하는 isDivisor 메소드 만들기
package onlyPractice;
import java.util.Scanner;
public class onlyPractice {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("num1 입력 : ");
int num1 = sc.nextInt();
System.out.println("num2 입력 : ");
int num2 = sc.nextInt();
}
public static boolean isdivisor(int num1, int num2) {
boolean result = false;
if (num1%num2 == 0) {
result = true;
} else {
result = false;
}
return result;
}
}
② 자신을 제외한 약수의 총합을 구하는 getSum 메소드 작성
③ 입력받은 매개변수가 완전수라면 true, 아니라면 false를 반환하는 isPerfect 메소드 작성
package onlyPractice;
public class onlyPractice {
public static void main(String[] args) {
System.out.println(isPerfect(7));
System.out.println(isPerfect(6));
}
public static boolean isdivisor(int num1, int num2) {
boolean result = false;
if (num1%num2 == 0) {
result = true;
} else {
result = false;
}
return result;
}
public static int getSum(int num) {
int result = 0;
for (int i = 1; i<num; i++) {
if (num%i == 0) {
result += i;
}
}
return result;
}
public static boolean isPerfect(int num) {
boolean result = false;
if (getSum(num) == num) {
result = true;
}
return result;
}
}
④ 1부터 1000까지의 숫자 중 완전수를 모두 출력하기
package onlyPractice;
public class onlyPractice {
public static void main(String[] args) {
System.out.print("1부터 1000까지의 완전수 : ");
for (int i = 1; i <= 1000; i++) {
if (isPerfect(i) == true) {
System.out.print(i+" ");
}
}
}
public static int getSum(int num) {
int result = 0;
for (int i = 1; i<num; i++) {
if (num%i == 0) {
result += i;
}
}
return result;
}
public static boolean isPerfect(int num) {
boolean result = false;
if (getSum(num) == num) {
result = true;
}
return result;
}
}
▶ 예제
제곱 수 구하기
정수형 base와 n을 입력 받기
base의 n제곱 만큼 값을 반환하는 powerN 메소드 작성
※ Math.pow(a, b) → a의 b제곱
package onlyPractice;
public class onlyPractice {
public static void main(String[] args) {
int base = 3;
int n = 3;
int result = powerN(base, n);
System.out.println("결과 확인 : "+result);
}
public static int powerN(int base, int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * base;
}
return result;
}
}
▶ 예제
피보나치 수열의 n번째 항을 출력하는 pibo 함수를 생성
1, 1, 2, 3, 5, 8, 13, ...
package onlyPractice;
public class onlyPractice {
public static void main(String[] args) {
System.out.println(pibo(1));
System.out.println(pibo(2));
System.out.println(pibo(3));
System.out.println(pibo(4));
System.out.println(pibo(5));
}
public static int pibo(int num) {
int n1 = 0;
int n2 = 1;
int result = 0;
if (num == 1) {
result = n2;
} else {
for (int i = 1; i < num; i++) {
result = n1+n2;
n1 = n2;
n2 = result;
}
}
return result;
}
}
'Java' 카테고리의 다른 글
자바 ArrayList (Java ArrayList) (0) | 2023.03.04 |
---|---|
자바 객체 지향 프로그래밍 OOP (Java Object Oriented Programming) (0) | 2023.01.31 |
자바 이차원 배열(Java Two-dimensional array) (0) | 2023.01.22 |
자바 배열 (Java Array) (0) | 2023.01.17 |
자바 반복문(Java Loop) (0) | 2023.01.16 |
댓글