Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 메소드 완벽 가이드: 선언부터 호출, 매개변수와 반환값까지

객체 지향 프로그래밍에서 메소드(method)는 특정 작업을 수행하는 코드 블록을 의미합니다. 예를 들어, 고객의 은행 계좌에 구매할 만큼 충분한 잔액이 있는지 확인하는 기능이나, 학생 이름 목록을 가나다순으로 정렬하는 기능 등이 모두 메소드로 구현될 수 있습니다.

이 글에서는 다양한 예제를 통해 자바에서 메소드를 사용하는 방법을 자세히 살펴보겠습니다. 메소드를 생성하는 방법, 자바 메소드 문법, 그리고 메소드를 호출하는 방법까지 단계별로 알아본 후에는 누구나 자바 메소드를 능숙하게 활용할 수 있게 될 것입니다.

자바 메소드란 무엇인가?

자바 메소드는 특정 작업을 수행하는 코드 블록을 정의하는 데 사용됩니다. 객체 지향 프로그래밍에서는 메소드를 흔히 '함수(function)'라고 부르기도 합니다.

개발자들이 코드에 메소드를 활용하는 데는 크게 두 가지 이유가 있습니다.

1. 코드 재사용성

메소드를 한 번 선언해 두면 코드 내에서 몇 번이고 재사용할 수 있습니다. 따라서 동일한 작업을 여러 번 실행해야 할 때, 같은 코드를 반복해서 작성하는 대신 메소드를 호출하기만 하면 됩니다.

2. 코드 가독성 향상

메소드를 사용하면 코드가 고유한 이름을 가진 별도의 블록에 저장되므로, 모든 로직이 메인 프로그램에 뒤섞이지 않고 깔끔하게 정리됩니다. 그 결과 코드를 읽고 유지보수하기가 훨씬 쉬워집니다.

자바의 메소드는 크게 두 가지 유형으로 나눌 수 있습니다.

  • 표준 라이브러리 메소드: 자바 언어에 기본적으로 내장되어 있는 메소드입니다. 예를 들어 println() 메소드는 java.io.PrintStream 라이브러리에 포함되어 있습니다.
  • 사용자 정의 메소드: 개발자가 직접 클래스 안에 정의하는 메소드입니다.

다음은 내장 메소드인 println()을 활용한 간단한 프로그램 예제입니다.

class Main {
	public static void main(String[] args) {
		System.out.println("This is a print statement.");
	}
}

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

This is a print statement.

자바 사용자 정의 메소드 만들기

사용자 정의 메소드는 개발자가 필요에 따라 클래스 내부에 직접 정의하는 메소드입니다. 특정 기능을 수행하는 코드 블록을 하나의 함수로 묶어 관리할 수 있다는 점이 핵심입니다.

메소드를 사용하기 전에 먼저 메소드를 정의(선언)해야 합니다. 자바에서 메소드를 선언하는 기본 문법은 다음과 같습니다.

modifier static returnType methodName (arguments) {
	// 여기에 코드를 작성합니다.
}

각 요소의 의미를 하나씩 살펴보겠습니다.

  • modifier(접근 제어자): 메소드의 접근 범위를 지정합니다(public, private 등).
  • static: 선택 사항인 키워드로, 클래스의 객체를 생성하지 않고도 메소드에 접근할 수 있게 해줍니다.
  • returnType(반환 타입): 메소드가 반환하는 데이터의 타입을 의미합니다(int, float, String, double 등).
  • methodName(메소드 이름): 선언하는 메소드의 이름입니다.
  • arguments(매개변수): 메소드에 전달되는 값들입니다. 매개변수 목록에는 값을 하나도 넣지 않거나, 하나 또는 여러 개를 넣을 수 있습니다.

그럼 실제 예제를 통해 메소드가 어떻게 동작하는지 확인해 보겠습니다.

동네 카페를 위한 주문 처리 앱을 개발한다고 가정해 보겠습니다. 프로그램 마지막에 "주문이 준비되었습니다"라는 메시지를 출력하는 기능이 필요합니다. 다음과 같이 코드를 작성할 수 있습니다.

class Main {
	public static void orderReady() {
		System.out.println("The order is ready.");
	}
}

위 코드에서는 orderReady()라는 메소드를 선언했습니다. 첫 번째 줄에서는 메인 프로그램이 작성될 Main 클래스를 선언하고, 그 안에 orderReady() 메소드를 생성했습니다. 이 메소드는 어떤 매개변수도 받지 않으며, 반환값도 없습니다(void).

orderReady() 메소드가 호출되면 메소드 본문에 있는 코드가 실행되어 콘솔에 "The order is ready."라는 메시지가 출력됩니다.

하지만 현재 상태의 코드는 아무것도 출력하지 않습니다. 아직 메소드를 호출하지 않았기 때문입니다. 메소드 내부의 코드를 실행하려면 반드시 메소드를 호출해야 합니다. 다음은 메소드를 호출하는 방법입니다.

import java.util.Scanner;

class Main {
	public static void orderReady() {
		System.out.println("The order is ready.");
	}

	public static void main(String[] args) {
		orderReady();
	}
}

코드를 실행하면 다음과 같은 결과가 출력됩니다.

The order is ready.

위 코드에서는 메인 프로그램의 코드를 담고 있는 main 함수를 정의한 뒤, orderReady() 형태로 orderReady 함수를 호출했습니다.

매개변수를 받는 자바 메소드

자바 메소드는 외부에서 전달된 인수(argument)를 받아 처리할 수도 있습니다. 이를 통해 메소드에 데이터를 넘겨줄 수 있습니다. 앞선 카페 예제에서, 바리스타가 어떤 주문이 준비되었는지 더 명확하게 알 수 있도록 "주문 #[주문번호]이 준비되었습니다"라는 메시지를 출력하고 싶다고 가정해 보겠습니다. 다음 코드로 구현할 수 있습니다.

class Main {
public static void orderReady(int orderNumber) {
		System.out.println("Order #" + orderNumber + " is ready.");
	}
	public static void main(String[] args) {
		orderReady(12);
	}
}

실행 결과는 다음과 같습니다.

Order #12 is ready.

이 예제에서 코드는 orderNumber라는 매개변수를 받도록 설정되어 있습니다. 위 코드에서는 값 12를 orderNumber 매개변수로 전달했고, orderReady() 메소드가 이 값을 읽어 "Order #12 is ready."라는 메시지를 출력합니다. 여기서 12는 우리가 orderNumber 매개변수에 전달한 값입니다.

값을 반환하는 자바 메소드

자바 메소드는 처리 결과를 메인 프로그램에 다시 반환(return)할 수도 있습니다. 두 숫자를 곱하는 앱을 만든다고 가정해 보겠습니다. 곱셈 연산은 함수 안에서 수행하고, 그 결과값을 메인 프로그램으로 돌려받는 구조입니다.

다음 코드로 구현할 수 있습니다.

class MultiplyNumbers {
	public static int multiplyNumbers(int numberOne, int numberTwo) {
		return numberOne * numberTwo;
	}

	public static void main(String[] args) {
		int numberOne = 7;
		int numberTwo = 9;
		int multiplied = multiplyNumbers(numberOne, numberTwo);
		System.out.println(numberOne + " x " + numberTwo + " is: " + multiplied);
	}
}

실행 결과는 다음과 같습니다.

7 x 9 is: 63

위 코드에서 multiplyNumbers() 메소드는 두 숫자를 곱하는 역할을 합니다. 이 메소드를 호출할 때는 곱하고 싶은 두 숫자를 매개변수로 지정해야 하며, 위 예제에서는 7과 9를 곱했습니다.

multiplyNumbers() 메소드는 두 숫자를 곱한 결과를 return 문을 통해 반환하고, 이 값은 다시 메인 프로그램으로 전달됩니다.

프로그램이 실행되는 과정을 단계별로 정리하면 다음과 같습니다.

  1. 변수 numberOne이 선언되고 값 7이 할당됩니다.
  2. 변수 numberTwo가 선언되고 값 9가 할당됩니다.
  3. multiplyNumbers() 메소드가 호출되며, numberOnenumberTwo가 매개변수로 전달됩니다. 연산 결과는 변수 multiplied에 저장됩니다.
  4. 콘솔에 "[Number1] x [Number2] is: [Result]" 형식의 메시지가 출력됩니다. 여기서 Number1은 numberOne의 값, Number2는 numberTwo의 값, Result는 multiplied의 값입니다.

마무리

메소드는 객체 지향 프로그래밍의 핵심 요소로, 특정 작업을 수행하는 코드 블록을 정의하고 여러 번 재사용할 수 있게 해줍니다. 자바에서 메소드를 잘 활용하면 코드의 가독성과 효율성을 크게 높일 수 있습니다.

이 글에서는 자바에서 메소드를 사용하는 방법, 메소드를 호출하는 방법, 그리고 매개변수와 return 문을 활용하는 방법까지 살펴보았습니다. 이제 여러분도 자바 메소드를 자유롭게 활용할 준비가 되었습니다.