☕Java/☕입문편

[Java 8강] 메서드 완벽 가이드(함수)

itstory(Booho) 2024. 12. 9. 18:11
728x90

Java 프로그래밍 언어에서 함수를 만드는 것은 매우 중요한 기초입니다. 

오늘은 두 수를 더하는 간단한 함수를 만들어 보겠습니다. 

이 글에서는 함수의 정의, 호출 방법, 그리고 전체적인 코드 예제를 통해 쉽게 이해할 수 있도록 설명하겠습니다.

 

함수를 만들기에 앞서 우리 초보들은 어떤 번거로움을 이겨내고 있는가 ? 를 알아야 합니다.

 

✅ 메서드가 필요한 이유

📌 초보자가 겪는 문제

처음 코딩을 배우면, 같은 동작을 반복해서 직접 작성하는 경우가 많습니다.

예제: 두 개의 숫자를 더하는 코드

// 두개의 정수를 더하자

this.add(3,5);
       
int num1 = 3;
int num2 = 5;
System.out.println(num1+num2);
// 7과 10을 더하자
num1=7;
num2=10;

System.out.println(num1+num2);
// 20과 6을 더하라
num1 = 20;
num2 = 6;
System.out.println(num1+num2);

System.out.println(5+2);

저와 같이 숫자를 더하는것은 한두번 하면 되는줄 알고 위와 같이 진행 할것입니다.

하지만!! 우리와 같은 초보가 아닌 사람들은 저렇게 하지 않는다는것을 알아두셔야 합니다.

 

그런사람들은 왜 함수를 만들까?

매번 같은 동작을 진행 하다보면 귀차니즘 발동...( 왜 같은걸 계속?? )
프로그래밍을 하다보니 중복되는 코드 == 재사용되는 코드가 발생하는데 이걸 매번 하는것보다 이걸 수행하는 무엇인가를 만들어 쓰는게 좋지 않을까? 

에라이!!! 내가 함수를 만들고 말지! 하면서 똑똑한 사람들이 직접 만들어 쓰는 것이 함수 입니다.

(효율적으로 처리하기 위해서 만드는게 함수다)

 

그래서 우리도 만드는 방법을 알아야 합니다.

 

📌 문제점:

  • 같은 코드가 반복됨 → 비효율적이고, 유지보수가 어려움
  • 만약 계산 로직을 변경해야 한다면? → 모든 코드를 찾아서 수정해야 함

📌 해결 방법: 메서드 사용하기

코드를 함수(메서드)로 만들면 한 번만 정의하고, 필요할 때마다 재사용할 수 있습니다.

즉, 프로그래머들은 효율성을 위해 메서드를 사용합니다!

 

 

 

1. 함수 이름 정하기

먼저, 우리가 만들 함수의 이름을 정해야 합니다. 

여기서는 add라는 이름을 사용하겠습니다. 이 함수는 두 개의 숫자를 입력받아 그 합을 반환합니다.


2. 함수의 파라미터 만들기

함수는 입력값을 받아서 처리하는 구조입니다. add 함수는 두 개의 정수형 파라미터(parameters)를 받습니다. 

이를 통해 사용자가 원하는 두 숫자를 입력할 수 있습니다.

 

✅ 메서드의 구조

메서드는 다음과 같은 기본 구조를 가집니다.

반환타입 메서드이름(매개변수) {
    실행할 코드;
    return 반환값;
}

설명:

  1. 반환타입 → 메서드가 반환하는 데이터 타입 (int, double, String 등)
  2. 메서드 이름 → 기능을 나타내는 적절한 이름을 사용해야 함 (add, multiply 등)
  3. 매개변수 → 메서드가 입력값을 받을 수 있도록 설정
  4. return 반환값 → 실행 결과를 호출한 곳으로 돌려줌 (필요 없는 경우 void 사용)

 

3. 함수 호출하기

이제 함수를 호출해보겠습니다. 

예를 들어, add(5, 10);이라고 호출하면, 5와 10을 더한 결과가 반환됩니다.

 

4. 전체 코드 작성
아래는 위의 내용을 바탕으로 작성한 전체 코드입니다.

 

✅ 메서드 예제 1: 두 수 더하기

public class FuncTest {
    // add 메서드 정의
    int add(int num1, int num2) {
        int total = num1 + num2; // num1과 num2를 더해서 total 저장
        return total; // 결과 반환
    }
    
    public static void main(String[] args) {
        FuncTest func = new FuncTest(); // 객체 생성
        
        // 메서드 호출 및 출력
        System.out.println(func.add(7, 10));
        System.out.println(func.add(20, 6));
    }
}

출력 결과:

17
26

📌 설명:

  • add(int num1, int num2) 메서드는 두 수를 더한 후 반환합니다.
  • System.out.println(func.add(7, 10));을 실행하면 7 + 10 = 17이 출력됩니다.
  • FuncTest func = new FuncTest(); → 메서드는 클래스 내부에 정의되므로, 객체를 생성한 후 호출해야 합니다.

 함수를 만들 떄에는 메인 클래스 전에 만들어야 합니다.

 

  • 코드 설명
  • 함수 정의 : public static int add(int num1, int num2) 부분에서 add 함수를 정의합니다. 이 함수는 두 개의 정수형 인자를 받아서 정수형 결과를 반환합니다.
  • 합 계산 : int total = num1 + num2;에서 두 수를 더하고 결과를 total 변수에 저장합니다.
  • 결과 반환 : return total;로 합산된 값을 반환합니다.
  • 메인 메서드 : main 메서드에서는 add(5, 10);을 호출하여 결과를 출력합니다.

우리는 위와 같은 예제를 기준으로 Jaba 에서 메모리의 구동 원리를 이해하면 함수를 만들기가 훨 씬 좋습니다.

위에 있는 예제 쿼리로 알기 쉽게 풀이 진행을 먼저 하도록 하겠습니다.

 

1. int add(int num1, int num2){    
2. int total  = num1 + num2;  ( num1 과 num2 를 더해서 토탈이라고 하고
3. return total;                       ( 결과를 리턴 해라 )

메인 클래스 public static void main(String[] args) {
                FuncTest func=new FuncTest();
                

4 System.out.println(func.add(7, 10));  

cpu 에 명령어 실행하면

1. int add(int num1, int num2){ 

쿼리로 이동  →

2. int total(17)  = num1(7) + num2(10) 

메모리에 total 이라는 과자봉투 안에 7과 10을 넣어서 내용물을 채우고 값을 계산  

4.System.out.println(func.add(7, 10)); 

해당값을 출력   

 

방식으로 진행 됩니다.

 

몇가지의 예제를 보도록 하겠습니다.

 

✅ 메서드 예제 2: 두 수의 평균 구하기

  • 이제 평균을 구하는 메서드를 만들어 보겠습니다
  • 이것을 함수로 만들어서, 재활용해서 사용하자
  • avg(3,4); ← 썻을 때 평균이 나왔으면 좋겠다.
public class AverageCalculator {
    // 평균을 구하는 메서드
    double avg(int num1, int num2) {
        double result = (num1 + num2) / 2.0;
        return result;
    }
    
    public static void main(String[] args) {
        AverageCalculator calc = new AverageCalculator();
        
        // 메서드 호출 및 결과 출력
        System.out.println(calc.avg(3, 4));
        System.out.println(calc.avg(10, 20));
    }
}

 

출력 결과:

3.5
15.0

 

📌 설명:

  • add(int num1, int num2) 메서드는 두 수를 더한 후 반환합니다.
  • System.out.println(func.add(7, 10));을 실행하면 7 + 10 = 17이 출력됩니다.
  • FuncTest func = new FuncTest(); → 메서드는 클래스 내부에 정의되므로, 객체를 생성한 후 호출해야 합니다.

 

 

✅ 메서드 예제 3: 점수에 따라 학점 부여하기

  • 수학점수가 90점 이상이면 A학점, 80이상 90미만일 경우는 B학점, 나머지는 C학점
  • func.getGrade(); 이 함수안에 100이라고 입력을 하면 → "A학점"
  • func.getGrade(); 이 함수안에  74이라고 입력을 하면 → "C학점"
public class GradeCalculator {
    // 학점 계산 메서드
    String getGrade(int score) {
        if (score >= 90) {
            return "A학점";
        } else if (score >= 80) {
            return "B학점";
        } else {
            return "C학점";
        }
    }
    
    public static void main(String[] args) {
        GradeCalculator gc = new GradeCalculator();
        
        // 학점 출력
        System.out.println("점수: 85, 학점: " + gc.getGrade(85));
        System.out.println("점수: 74, 학점: " + gc.getGrade(74));
    }
}

출력 결과

점수: 85, 학점: B학점
점수: 74, 학점: C학점

 

이 예제는 getGrade라는 이름의 함수를 정의합니다. 

이 함수는 정수형 매개변수 score를 입력받고, String 타입의 값을 반환합니다. 

반환되는 값은 학생의 학점입니다.


✅ 메서드 예제 4: 짝수인지 판별하기

public class EvenChecker {
    // 짝수인지 판별하는 메서드
    boolean isEven(int num) {
        return num % 2 == 0;
    }
    
    public static void main(String[] args) {
        EvenChecker ec = new EvenChecker();
        
        // 메서드 호출 및 결과 출력
        System.out.println("13은 짝수인가요? " + ec.isEven(13));
        System.out.println("8은 짝수인가요? " + ec.isEven(8));
    }
}

 

13은 짝수인가요? false
8은 짝수인가요? true

  • 홀수 짝수 구분하는 함수
  • func.isEven(13); → 홀수니까 false
  • func.isEven(13); → 짝수니까 true

✅ 이번 강의에서 배운 내용:

  1. 메서드의 필요성 및 정의 방법
  2. 매개변수와 반환값을 사용하는 방법
  3. 다양한 메서드 예제 실습
728x90
반응형