본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 메서드 / 메서드 호출 / return 문 / 반환값 )

by ✲ 2020. 7. 8.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

메서드

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

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

 

메서드의 장점

- 코드의 중복을 줄일 수 있음 

- 코드의 관리가 쉬움

- 코드 재사용 가능

- 코드가 간결해서 이해하기 쉬움

 

메서드의 작성

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

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

 

메서드 = 선언부 + 구현부 

반환타입 메서드 이름  (타입 변수명, 타입 변수명...)          // 선언부

{

    // 메서드 호출시 수행될 코드                                 // 구현부

}

 

메서드 구현부 

지역변수 (Local variable) : 메서드 내에 선언된 변수 

int add(int x, int y) {

    int result = x + y;

    return result; 

}

int multiply(int x, int y) {

    int result = x * y; 

    return result; 

}

* 지역변수는 메소드 안에서만 사용하기 때문에 서로 다른 메소드 영역에서는 이름이 같아도 OK 

* 매개변수도 지역변수 

 

예제 

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
31
32
33
34
35
36
37
38
39
40
41
42
 
class Ex6_4 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyMath mm = new MyMath();
        long result1 = mm.add(5L,3L);
        long result2 = mm.substract(5L,3L);
        long result3 = mm.multiply(5L,3L);
        double result4 = mm.divide(5L,3L);
        long result5 = mm.max(5L,3L);
        
        System.out.println("add(5L+3L) = " + result1 );
        System.out.println("substract(5L+3L) = " + result2 );
        System.out.println("multiply(5L+3L) = " + result3 );
        System.out.println("divide(5L+3L) = " + result4 );
        System.out.println("max(5L+3L) = " + result5 );
        
    }
}
 
    class MyMath {               // 메서드는 클래스 영역 안에서만 정의 가능 
        long add(long a, long b) {
            long result = a +b ; 
            return result;
        }
        long max(long a, long b) {
            return (a>b? a : b);
        }
        long substract(long a, long b) {
            return a -b;
        }
        long multiply(long a, long b) {
            return a * b;
        }
        double divide(double a, double b) {
            return a / b;
        }
    }
    
    
 
cs

출력

add(5L+3L) = 8
substract(5L+3L) = 2
multiply(5L+3L) = 15
divide(5L+3L) = 1.6666666666666667
max(5L+3L) = 5

 

메서드의 호출

메서드이름(값1, 값2,....) ;                 // 메서드 호출

print99danAll();                            // void print99danAll() 호출

int result = add(3,5);                     // int add(int x, int y) 를 호출하고 , 결과를 result에 저장 

 

return문 

- 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다. 

1
2
3
4
5
6
7
8
9
10
11
12
 
void printGuGudan(int dan){
    
    if(!2<= dan && dan<=9))
        return;                              // dan의 값이 2~9가 아닌 경우, 호출한 곳으로 되돌아감 
 
    for(int i = 1; i<9; i++) {
        System.out.printf("%d * %d = %d%n", dan, i , dan * i) ;
    }
    return;               //반환타입이 void 이므로 생략가능 , 안쓰면 컴파일러가 자동 추가  
}
 
cs

* 반환타입이 void가 아닌 경우, 반드시 return 필요 

 

 

반환값 

- 반환타입이 void가 아닐 때 return 뒤에 반환 값을 반드시 작성! 

- 반환타입과 return 뒤의 값의 타입이 일치하여야 함!

반응형

댓글