method

  • 타 언어의 함수 function 과 같은 개념

  • 자바는 모든 것이 클래스의 요소이므로 메소드 method 라 부름

main() 메소드

  • 자바 응용프로그램의 실행 시작 메소드

  • 반드시 static, public, void, 매개 변수 타입은 문자열 배열

package sec04.chap05;

public class MainMethod {
    public static void main(String[] args) {

        String a = args[0];
        String b = args[1];
        String c = args[2];
        String d = args[3];

    }
}

예제 3-13

메소드의 의미 1 . 반복을 최소화

	double x = 3, y = 4;

        System.out.printf("%f + %f = %f%n", x, y, x + y);
        System.out.printf("%f - %f = %f%n", x, y, x - y);
        System.out.printf("%f * %f = %f%n", x, y, x * y);
        System.out.printf("%f / %f = %f%n", x, y, x / y);

        x = 10; y = 2;

        System.out.printf("%f + %f = %f%n", x, y, x + y);
        System.out.printf("%f - %f = %f%n", x, y, x - y);
        System.out.printf("%f * %f = %f%n", x, y, x * y);
        System.out.printf("%f / %f = %f%n", x, y, x / y);

        x = 7; y = 5;

        System.out.printf("%f + %f = %f%n", x, y, x + y);
        System.out.printf("%f - %f = %f%n", x, y, x - y);
        System.out.printf("%f * %f = %f%n", x, y, x * y);
        System.out.printf("%f / %f = %f%n", x, y, x / y);

package sec04.chap05;

public class Ex01 {
    public static void main(String[] args) {
        double xx = 3, yy = 4;
        addSubtMultDiv(xx, yy);

        xx = 10; yy = 2;
        addSubtMultDiv(xx, yy);

        xx = 7; yy = 5;
        addSubtMultDiv(xx, yy);
    }

    //  ⭐️ 메인 메소드 외부에 선언할 것
    static void addSubtMultDiv (double a, double b) {
        System.out.printf("%f + %f = %f%n", a, b, a + b);
        System.out.printf("%f - %f = %f%n", a, b, a - b);
        System.out.printf("%f * %f = %f%n", a, b, a * b);
        System.out.printf("%f / %f = %f%n", a, b, a / b);
    }
}

메소드의 의미2. 값을 받고 연산하여 결과값을 반환 - 함수

package sec04.chap05;

public class Ex02 {
    public static void main(String[] args) {
        //  ⭐️ 반환한다는 것: 바꿔 쓸 수 있다는 것
        //  메서드 실행문을 메서드의 반환값으로 치환
        int int1 = add(2, 3);
        System.out.println(int1);

        System.out.println(add(4, 5));

        int int2 = add(add(6, 7), add(8, 9));
        System.out.println(int2);
    }


    static int add (int num1, int num2) {
        return num1 + num2;
    }
}

static boolean checkIfContain (String text, String token) {
    return text.toLowerCase().contains(token.toLowerCase());
}
        System.out.println("\n- - - - -\n");
    if (checkIfContain("Hello World","hello")){
            System.out.println("포함됨");
    }else {
            System.out.println("포함 안 됨");
    }
  • static : 정적 메소드 (클래스 메소드) 에서 호출하려면(main 등) 붙어야 함

    • 정적이 아닌 메소드 (인스턴스 메소드) 는 객체지향 섹션에서 배울 것

  • 매개변수 parameter : 각각 자료형과 변수명을 적음. 없을 시 빈 괄호

    • 호출할 때 넣는 값 (add(3, 4) 의 3과 4)을 인자 argument 라고 함

  • return : 반환하는 값이 있을 때, 맨 마지막에 붙임

메소드 사용 예시

package sec04.chap05;

public class Ex03 {
    public static void main(String[] args) {
        sayHello();

        int count1 = getCount();
        int count2 = getCount();
        int count3 = getCount();
        int count4 = getCount();

    }


    //  매개변수도, 반환값도 없는 메소드
    static void sayHello () {
        System.out.println("안녕하세요!");
    }

    static int count = 0;

    //  매개변수 없이 값만 반환하는 메소드
    //  외부 변수 값을 변화시킴 (static이므로 static 변수만 가능)
    static int getCount () {
        System.out.println("카운트 증가");
        return ++count;
    }

}
  • returnprintln 윗줄로 옮겨 볼 것

    • return 은 블록을 종료하므로 이후의 코드 무효화 - 컴파일 에러 발생

  • 반환값의 자료형을 바꿔 볼 것 *(short, long, 기타…)

    • 반환값이나 인자의 자료형에 어긋날 경우 컴파일 에러 발생

  • ⚠️ 외부의 변수 값을 바꾸는 것은 좋은 메서드가 아님

package sec04.chap05;

public class Ex04 {

    public static void main(String[] args) {
        double avg = getAverage(new int[] {3, 5, 4, 13, 7});
    }

    static double getAverage (int[] nums) {

        double sum = 0;
        for (int num : nums) {
            sum += num;
        }

        return sum / nums.length;
    }
}

package sec04.chap05;

public class Ex05 {

    public static void main(String[] args) {
        int[] numbers = {3, 5, 9, 2, 8, 1, 4};

        //  변수에 담아 보다 효율적으로 바꿔볼 것
        int maxOfNumbers = getMaxAndMin(numbers)[0];
        int minOfNumbers = getMaxAndMin(numbers)[1];
    }

    //  자바의 메소드는 하나의 값만 반환 가능
    //  여러 값을 반환하려면 배열 또는 이후 배울 객체를 활용
    static int[] getMaxAndMin (int[] nums) {

        int max = nums[0];
        int min = nums[0];
        for (int num : nums) {
            max = max > num ? max : num;
            min = min < num ? min : num;
        }

        return new int[] {max, min};
    }

}

Last updated