본문 바로가기
Java

자바 메소드(Java Method)

by wanttosleep1111 2023. 1. 28.

자바 메소드(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;
	}
}

댓글