JAVA/Java 기초

메서드 (기능)

john_ 2022. 12. 12. 09:51
728x90

자바 프로그램  = 클래스의 모음 : 하나 이상의 클래스들로 구성

클래스              = 데이터 선언들과 메소드 정의 들로 이루어집니다.

 

메소드는 클래스의 주요 구성요소입니다.

메소드             = 특정 작업을 수행하는 자바 문들의 모음입니다.

 

표준 클래스 라이브러리에 있는 메소드 는 다음과 같은 것을 예로 들수있습니당

System.out.println : println 메소드를 호출

 

메소드 종류는 2가지로 나뉩니다.

  1. 특정 작업을 수행하고 결과 값을 반환하는 메소드
  2. 특정 작업을 수행하고 결과 값을 반환하지 않는 메소드

String 클래스의 length 메소드 : 문자 길이를 반환합니다.

System.out 객체의 println 메소드 : 주어진 문자열을 출력하고 어떤 값도 반환하지 않습니다.

 


메소드의 정의

메소드는 값을 반환하느냐 반환하지 않느냐에 따라 다르게 정의됩니다.

모든 메소드는 클래스내에 포함이 됩니다.

 

메소드는 머리부와 몸체로 이루어집니다.

형식의 틀은 다음과 같습니다.

public 반환유형 메소드이름(형식매개변수 목록)           <- 머리부
{                                                                                      <-몸체
           문 1;
           문 2;
           ...
           문 n;
           return <연산식>                                                  <- 반환값 정의
}

 

이해를 돕기위해 실례를 적용해보겠습니다.

public double computerAverage(int number1, int number2, int number3)
{
	return (number1 + number2 + number3) /3.0;
}
// 반환값이 있습니다.
///////////////////////////////////
// 반환값이 없습니다.
public void dutchPay(int totalAmount, int count)
{
	int dutchpayAmount;

	if (count == 0) {
		System.out.println(" 사람들 수가 0이다");
		return;
	} else {
		dutchpayAmount = totalAmount / count;
		System.out.println("일인당 부담금액 : " + dutchpayAmount);
	}
}

상기 코드에서 처럼 리턴값이 있는 경우에는 리턴값이 저장되는 장소가 있어야합니다!

 


메소드 작성

모든 메소드는 특정 작업을 수행합니다.

한 메소드가 특정 작업을 어떻게 수행하는지는 보통 알고리즘에 의해 기술됩니다.

 

알고리즘은 특정 문제를 풀기위한 과정을 단계별로 기술한 것으로,

보통 의사코드(pseudocode)순서도(flowchart) 중 하나를 사용하며 기술합니다.

 

의사코드는 한줄 문장 들과 자바 문들을 혼합한 것으로,

자바언어의 구문 규칙들을 그대로 따르지 않고 코드가 어떻게 작동하는지를 보여주기에 충분한 구조를 제공합니다.

전문 프로그래머들은 의사코드가 자바로 프로그래밍하는것에 더 가깝기 때문에 의사 코드를 선호합니다.

다만 의사 코드는 복잡한 조건들을 다루거나, 반복의 경우 초보자가 명확하게 기술하기가 쉽지 않습니다.

이런 경우 사용되는 것이 순서도 입니다.

 

순서도는 어떤 문제를 해결하는데 필요한 논리적인 단계들을 그림으로 표시한 것입니다.

 

예시를 한번 들어보겠습니다.

예제
두 정수들을 넘겨 받아 그중 작은 정수를 찾는 메소드를 작성

1. 메소드의 이름 : findMin
2. 두 정수에 대한 변수 이름 : number1, number2
3. 두 정수에 대한 데이터 형 : int
4. 메소드 머리부 : public int findMin(int number1, int number2)
5. 메소드가 수행하여 최소값을 구하는것.

 

시작    
최소값을 저장하는 변수 minmum을 선언한다.    
number 1 < number 2  - 아니오 -   
 | 예 minimum = number2
minimum = number1 |  
minimum을 반환한다. _____|  
   

해당 순서도를 통해 메소드 코드를 작성해보겠습니다.

package java1212;

public class method1 {

	public static int findMin(int number1, int number2) {
		//과정 1 : 최소값을 저장하는 변수 minimum 선언
		int minimum;
		
		//과정 2 : 최소값은 두 정수들을 비교하여 작은 값으로 합니다.
		if (number1 < number2)
			minimum = number1;
		else 
			minimum = number2;
		
		return minimum;
}
	
	public static void main(String[] args) {
		
		// 메소드의 반환 되는 값을 저장할 변수가 필요합니다.
		// findMin을 static에 의해 메모리에 고정을 시킵니다.

		int minimum1;
		minimum1 = findMin(20, 30);
		
		System.out.print("두개의 정수 중 작은 값은 : " + minimum1);
		
		// 다음과 같이 변수를 선언해서 사용도 가능합니다.
		// int value1 = 65;
		// int value2 = 75;
		// int minimum3;
		// minimum3 = findMin(value1, value2)
		//
		// System.out.print("두개의 정수중 작은 값은 : " + minimum3);
		
	}
}

 

이런식으로 사용이 가능합니다!

 

예제를 한번 더 들어볼까요?

문제
더치페이
총 금액 중 일인당 부담해야할 금액을 계산하는 프로그램을 작성하시오.
(메소드 이용 : 메소드 부분에서 더치페이 값을 계산)
totalPay        : 총 금액
count            : 인원수
dutchPay      : 더치페이 비용 (반환값)

"일인당 부담금액: "

해당 예제를 코드로 나타내면!

 

package java1212;

public class method2 {
	
	public static int payMoney(int totalPay, int count) {
		
		int dutchPay;
		
		dutchPay = totalPay / count;
		
		return dutchPay;
		
	}

	public static void main(String[] args) {

		int dutchPay1;
		
		dutchPay1 = payMoney(49200, 5);
		
		System.out.println(" 일인당 부담 금액 : " + dutchPay1 + "원");
		
	}
}
출력
 일인당 부담 금액 : 9840원

가 됩니다!


재귀 메소드

보통 메소드는 어떤 작업을 수행하기 위해 다른 메소드를 호출합니다.

그러나 메소드가 자기 자신을 호출할수도 있는데,

이런 메소드를 재귀 메소드(recursive method)라고 부릅니다.

재귀(recursion)는 한 메소드가 어떤 작업을 수행하기 위해 자기 자신을 호출하는 프로그래밍 기법입니다.

 

예시)
생일날 큰 선물 상자를 받았다고 가정할때,
선물상자를 열어보니 그 안에 테니스 라켓과 또 다른 상자가 있다.
두번째 상자를 열어보니 그안에 테니스 운동화와 또다른 상자가 있다.
세번째 상자를 열어보니 테니스 공이 들어있다.

정의
선물 상자는 선물이다.
혹은 선물 상자는 선물과 선물 상자이다.

숫자 목록은 숫자이다.
혹은 숫자 목록은 숫자, 쉼표(,), 와 숫자 목록이다.

58
38, 93, 28, 49

 

재귀메소드를 이용해서

1~100까지의 합을 구해보겠습니다.

 

package java1212;

public class method4 {
	
	public static int findSum(int N) {
		
		// 합을 저장하는 변수
		int sum;
		
		// N이 1일 경우, 합은 1
		if (N == 1)
			sum = 1;
		else // N이 2 이상일 경우,
			sum = findSum(N-1) + N; // N을 더해줍니다
		
		// 합을 리턴합니다.
		return sum;
	}

	public static void main(String[] args) {

		int number = 100;
		System.out.println("1부터 " + number + "사이의 모든 정수들의 합은 " 
        + findSum(number) + "이다.");
	}
}

 

728x90

'JAVA > Java 기초' 카테고리의 다른 글

생성자, Constructor - Java 기초  (0) 2022.12.13
메서드, 2편 - java 기초  (0) 2022.12.13
Array, 다차원 배열 - Java 기초  (0) 2022.12.09
Array, 배열 - Java 기초  (0) 2022.12.09
반복문, while문 - Java 기초  (0) 2022.12.08