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;
    }
}
- return을- println윗줄로 옮겨 볼 것- 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