jinpark1992 2023. 11. 14. 12:56

1. 메소드

package chap_06;

public class _01_Method {
    // 메소드 정의
    public static void sayHello() {
        System.out.println("안녕하세요? 메소드입니다.");
    }

    
    public static void main(String[] args) {
        // 메소드 호출
        System.out.println("메소드 호출 전");
        sayHello();
        sayHello();
        sayHello();
        System.out.println("메소드 호출 후");
    }
}

 

2. 전달값(Parameter)

package chap_06;

public class _02_Parameter {
    // 전달값이 있는 메소드
    public static void power(int number){ // Parameter, 매개변수
        int result = number * number;
        System.out.println(number + " 의 2승은 " + result);
    }

    public static void powerByExp(int number, int exponent){
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number; // result = result * number;
        }
        System.out.println(number + "의" + exponent + " 승은 " + result);
    }

    public static void main(String[] args) {
    // 전달값 Parameter
    // 2 -> 2 * 2 = 4
    // 3 -> 3 * 3 = 9
        
    // Argument, 인수    
        power(2); // 2 * 2 = 4
        power(3); // 3 * 3 = 9

        powerByExp(2,3); // 2 * 2 * 2 = 8
        powerByExp(3,3); // 3 * 3 * 3 = 27
        powerByExp(10,0); // 1
    }
}

 

3. 반환값(Return) 

package chap_06;

public class _03_Return {
    // 호텔 전화번호
    public static String getPhoneNumber() {
        String phoneNumber = "02-1234-5678";
        return phoneNumber;
    }
    // 호텔 주소
    public static String getAddress(){
        return "서울시 어딘가";

    }
    // 호텔 엑티비티
    public static String getActivities(){
        return  "볼링장, 탁구장, 노래방";
    }
    public static void main(String[] args) {
        // 반환값, Return
        String contactNumber = getPhoneNumber();
        System.out.println("호텔 전화번호: " + contactNumber);

        String address = getAddress();
        System.out.println("호텔 주소: " + address);

        System.out.println("호텔 액티비티 :" + getActivities());
    }
}

 

4. 전달값과 반환값 

package chap_06;

public class _04_ParameterAndReturn {

    public static int getPower(int number) {
        int result = number * number;
        return result;
        // return number * number;
    }


    public static int getPowerByExp(int number, int exponent) {
        int result = 1;// 2,4,8
        for (int i = 0; i < exponent; i++) { // 0,1,2,3
            result *= number; // result = result * number;
        }
        return result;
    }


    public static void main(String[] args) {
        // 전달값과 반환값이 있는 메소드
        int retVal = getPower(2);
        System.out.println(retVal); // 2 * 2 = 4

        retVal = getPower(3);
        System.out.println(retVal); // 3 * 3 = 9

        retVal = getPowerByExp(3,3);
        System.out.println(retVal); // 3 * 3 * 3 = 27

        System.out.println(getPowerByExp(2,4)); // 2 * 2 * 2 * 2 = 16
    }
}

 

5. 메소드 오버로딩 

package chap_06;

public class _05_Overloading {
    public static int getPower(int number) {
        int result = number * number;
        return result;
        // return number * number;

    }


    public static int getPower(String strNumber) {
        int number = Integer.parseInt(strNumber);
        return number * number;
    }

    public static int getPower(int number, int exponent) {
        int result = 1;// 2,4,8
        for (int i = 0; i < exponent; i++) { // 0,1,2,3
            result *= number; // result = result * number;
        }
        return result;
    }

    public static void main(String[] args) {
        // 메소드 오버로딩
        // 같은 이름의 메소드를 여러 번 선언
        // 1. 전달값의 타입이 다르거나
        // 2. 전달값의 갯수가 다르거나 할때 메소드 오버로딩 선언이 가능하다.
        System.out.println(getPower(3)); // 3 * 3 = 9
        System.out.println(getPower("4")); // 4 * 4 = 16
        System.out.println(getPower(3, 3)); // 3 * 3 * 3 = 27
    }
}

 

6. 메소드가 필요한 이유 

package chap_06;

public class _06_WhenToUse {
    public static int getPower(int number) {
    return getPower(number, 2); // 메소드 안에 메소드를 또 쓸수가 있음.
    }
    public static int getPower(int number, int exponent){
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        return result;
    }

    public static void main(String[] args) {
        // 메소드 필요한 이유
        
        
        // 2의 2승을 구하기
        System.out.println(getPower(2,2)); // 2 * 2 = 4

        // 3의 3승을 구하기

        System.out.println(getPower(3,3)); // 3 * 3 * 3 = 27


        // 4의 2승을 구하기

        System.out.println(getPower(4,2)); // 4 * 4 = 16

    }


}

 

7. 변수의 범위 

package chap_06;

public class _07_VariableScope {
    public static void methodA(int number) {
        //System.out.println(number);
        //System.out.println(result);
    }

    public static void methodB() {
        int result = 1; // 지역 변수
    }


    public static void main(String[] args) {
        int number = 3;

        //System.out.println(result);

        for (int i = 0; i < 5; i++) {
            System.out.println(i);
        }
        // System.out.println(i);

        {
            int j = 0;
            System.out.println(j);
            System.out.println(number);

        }
       // System.out.println(j);
    }
}

 

8. Main 메소드

package chap_06;

public class _08_MainMethod {
    public static void main(String[] args) {
        for (String s :
                args) {
            System.out.println(s);

        }
        // 1. 도서 조회
        // 2. 도서 대출
        // 3. 도서 반납
        if(args.length == 1){
            switch (args[0]){
                case "1" :
                    System.out.println("도서 조회 메뉴입니다.");
                    break;
                case "2":
                    System.out.println("도서 대출 메뉴입니다.");
                    break;
                case "3":
                    System.out.println("도서 반납 메뉴입니다.");
                    break;
                default:
                    System.out.println("잘못 입력하셨습니다.");
            }
        } else
            System.out.println("사용법) 1~3 메뉴 중 하나를 입력하세요.");
    }
}