자바 공부중. . .(4) (메소드)

Reobivy·2023년 6월 15일
0

객체 지향 프로그래밍까지 한 발짝.


메소드

메소드와 객체지향과 같은 개념은 웅장하고, 결함이 없고, 유지보수가 쉬운 코드를 짜기 위한 기법이다. 이전에 배운 것들만으로 프로그램을 만드는 것은 가능하지만, 규모 있는 프로그램을 만들기 위해서는 이를 꼭 익혀야 한다.
이제 ‘잘 만드는 법’을 배운다고 생각하자.

메소드의 형식

이제껏 수없이 보았던 이 부분이 메소드이다(!).

메소드의 정의와 호출

numbering이라는 메소드를 정의하고 main이라는 메소드에서 호출되고 있다.

main

main 메소드는 규칙이다. 프로그램을 만들 때에는 반드시 public static void main(String[] args)가 이끄는 중괄호 안에 로직을 위치시켜야 한다.

메소드 적용의 예시

package org.opentutorials.javatutorials.method;
public class MethodDemo3 {
    public static void numbering() {
        int i = 0;
        while (i < 10) {
            System.out.println(i);
            i++;
        }
    }
    public static void main(String[] args) {
        numbering();
        numbering();
        numbering();
        numbering();
        numbering();
    }
}
메소드를 활용해서 재활용성이 높은 로직을 만든 모습

메소드의 입력과 출력

매개변수와 인자

package org.opentutorials.javatutorials.method;
public class MethodDemo4 {
    public static void numbering(int limit) {
        int i = 0;
        while (i < limit) {
            System.out.println(i);
            i++;
        }
    }
    public static void main(String[] args) {
        numbering(5);
    }
}
메소드 numbering의 괄호 안에 위치한 숫자 5가 이 메소드가 호출될 때 limit이라는 변수의 값이 된다. 이 값은 메소드 numbering의 중괄호 안에서만 사용할 수 있다.
위의 코드는 아래 코드와 동일한 의미를 가진다.
public static void numbering() {
    int limit = 5;
    int i = 0;
    while (i < limit) {
        System.out.println(i);
        i++;
    }

복수의 인자

package org.opentutorials.javatutorials.method;
public class MethodDemo5 {
    public static void numbering(int init, int limit) {
        int i = init;
        while (i < limit) {
            System.out.println(i);
            i++;
        }
    }
    public static void main(String[] args) {
        numbering(1, 5);
    }
}
메소로 여러 개의 입력값을 받는 예제 코드. 입력값을 복수로 받고 싶다면 콤마 뒤에 매개변수를 정의해주면 된다.

return

package org.opentutorials.javatutorials.method;
public class MethodDemo6 {
    public static String numbering(int init, int limit) {
        int i = init;
        // 만들어지는 숫자들을 output이라는 변수에 담기 위해서 변수에 빈 값을 주었다.
        String output = "";
        while (i < limit) {
            // 숫자를 화면에 출력하는 대신 변수 output에 담았다.
            output += i;
            i++;
        }
        // 중요!!! output에 담겨 있는 문자열을 메소드 외부로 반환하려면 아래와 같이 return 키워드 뒤에 반환하려는 값을
        // 배치하면 된다.
        return output;
    }
    public static void main(String[] args) {
        // 메소드 numbering이 리턴한 값이 변수 result에 담긴다.
        String result = numbering(1, 5);
        // 변수 result의 값을 화면에 출력한다.
        System.out.println(result);
    }
}
return은 메소드 내에서 뒤에 따라오는 값을 메소드의 결과로 반환한다.
return을 통해 반환할 값의 데이터 타입은 메소드의 이름 옆에 명시되어야 한다.

반환 값이 없다면 아래와 같이 void를 적어준다.(!)

return의 추가적인 특성

package org.opentutorials.javatutorials.method;
public class ReturnDemo {
    public static int one() {
        return 1;
        return 2;
        return 3;
    }
    public static void main(String[] args) {
        System.out.println(one());
    }
}
위 코드는 컴파일조차 되지 않는다. return은 메소드를 종료시키는 역할을 하므로 return이 처음 등장한 이후의 구문은 실행되지 않기 때문이다.

하지만

package org.opentutorials.javatutorials.method;
public class ReturnDemo2 {
    public static String num(int i) {
        if(i==0){
            return "zero";
        } else if(i==1){
            return "one";
        } else if(i==2){
            return "two";
        }
        return "none";
    }
    public static void main(String[] args) {
        System.out.println(num(1));
    }
}
이 코드는 문제가 전혀 없다. return이 중복적으로 실행될 가능성이 없기 때문이다.

복수의 return

package org.opentutorials.javatutorials.method;
public class ReturnDemo4 {
    public static String[] getMembers() {
        String[] members = { "최진혁", "최유빈", "한이람" };
        return members;
    }
    public static void main(String[] args) {
        String[] members = getMembers();
    }
}
이와 같이 여러 개의 값을 출력하고 싶을 때에는 배열을 이용하면 된다.
이 포스트는 <생활코딩>의 자바 강의를 요약한 포스트입니다.

0개의 댓글