Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

메서드(method) 본문

Java/객체지향

메서드(method)

빌드이너프 2023. 5. 25. 10:43

메서드

문장들을 작업단위로 묶어놓은 것

값(입력)을 받아서 처리하고, 결과를 반환(출력)

입력은 n개, 출력은 0~1개

출력이 많을 경우 배열이나 하나의 객체로 묶어야함

클래스 영역에만 정의 가능

 

메서드의 장점

코드의 중복을 줄일 수 있다

코드의 관리가 쉽다

코드를 재사용할 수 있다

코드가 간결해서 이해하기 쉬워진다

 

메서드의 작성

반복적으로 수행되는 여러 문장들을 메서드로 작성

하나의 메서드는 한 가지 기능만 수행하도록 작성

반환타입 메서드이름(타입 변수명, 타입 변수명, ...) { // 선언부
	// 메서드 호출 시 수행될 코드		// 구현부
}

 

int add(int a, int b) { 
    int result = a + b;
    return result; // 호출한 메서드로 결과를 반환
}

 

반환타입이 없는 경우

반환타입으로 void를 적어야 함

void print99danAll() {
    for(int i=1;i<=9;i++) {
        for(int j=2;j<=9;j++) {
            System.out.println(j+"*"+i+"="+(j*i)+" ");
        }
        System.out.println();
    }
}

 

지역변수(local variable)

메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 된다

메서드 add와 메서드 multiply의 각각의 변수 x와 y는 이름만 같고 다른 변수이다

int add(int x, int y) {
    int result = x+y;
    return result;
}

int multiply(int x, int y) {
    int result = x * y;
    return result;
}

 

메서드 호출

괄호()안에 지정해둔 값, 즉 인자(인수)의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함

반환 타입이 void가 아닌 경우: 메서드가 작업을 수행하고 반환한 값을 대입연산자로 저장하는 것이 보통이지만, 저장하지 않아도 문제가 되지 않는다

메서드이름(값1, 값2, ...); // 메서드를 호출하는 방법

print99danAll(); // void print99danAll() 호출, void 값이므로 작업 결과를 저장하지 않아도됨
int result = add(3, 5); // int add(int x, int y)를 호출하고, 결과를 result에 저장

 

코드

public class MyMathTest {
    public static void main(String[] args) {
        MyMath mm = new MyMath();
        long result1 = mm.add(5L, 3L);
        long result2 = mm.subtract(5L, 3L);
        long result3 = mm.multiply(5L, 3L);
        double result4 = mm.divide(5L, 3L);

        long result5 = mm.max(5, 3);
        long result6 = mm.min(5, 3);

        mm.max(5, 3); // 그냥 호출만 해도 상관없음, 저장안되고 호출만 됨

        System.out.println(result1); // 8
        System.out.println(result2); // 2
        System.out.println(result3); // 15
        System.out.println(result4); // 1.0

        System.out.println(result5); // 5
        System.out.println(result6); // 3
    }

}

class MyMath {
    long add(long a, long b) {
        long result = a + b;
        return result; // return a+b;
    }

    long subtract(long a, long b) {
        return a-b;
    }
    long multiply(long a, long b) {
        return a*b;
    }
    long divide(long a, long b) {
        return a/b;
    }

    // 둘 중에 큰 값 반환
    long max(long a, long b) {
//        long result = 0;
//        result = a > b ? a : b;
        return a > b ? a : b;
    }

    // 둘 중에 작은 값 반환
    long min(long a, long b) {
        return a < b ? a : b;
    }
}

 

메서드 실행순서

1. main 메서드에 메서드 add 호출, 호출 시 지정한 5L과 3L이 메서드 add의 매개변수 x와 y에 복사된다

2. 메서드 add의 괄호{} 안에 있는 문장들이 순서대로 실행된다

3. 메서드 add의 모든 문장이 실행되거나 return문을 만나면, 호출한 메서드(main 메서드)로 되돌아와서 이후의 문장들을 실행한다

MyMath mm == new MyMath(); // 인스턴스 생성

long value = mm.add(5L, 3L); // 메서드 호출

long add(long x, long y) {
    long result = x+y;
    return result;
}