메소드

yoongiiii·2023년 10월 21일
0

✍🏻 메소드

01. 메소드

어떤 기능을 수행하는 코드들을 묶어 놓은 공간

  • 메소드 선언 방법
    public static void 메소드이름() {명령}
    -main 메소드 영역 밖에서 정의
    -void => 반환해 줄 형태로 반환값의 자료형으로 대체 (void는 반환값이 없을 때 사용)
    -메소드는 동작을 하는 것이기 때문에 메소드 이름으로는 주로 동사를 이용
	public static void sayHello(){
    	System.out.println("Hello I'm Method");	
    }
  • 메소드 호출 방법
    메소드이름();
    -main 메소드 영역 안에서 메소드이름(); 으로 호출
    sayHello(); //"Hello I'm Method"

02. 매개변수(Parameter) 와 인자 (argument)

  • 선언 시,
    public static void 메소드이름(전달값) {명령}
  • 호출 시,
    메소드이름(인자);
	//전달값이 있는 메소드 선언과 호출
    public static void power(int number){ //전달값, 매개변수
    	int result = number * number;
        System.out.println(number + " 의 2승은 " + result);
    }
    
    public static void main(String[] args) {
    	power(2); //2의 2승은 4
   }
    
    //전달값이 2개 있는 메소드 선언과 호출
    public static void power(int number, int exponent){ 
    	int result = 1;
        for (int i = 0; i < exponent; i++) {
            result = result * number;
        }
        System.out.println(number + " 의 " + exponent + "승은 " + result);
        }
    
    public static void main(String[] args) {
    	powerByExp(2,3); //2의 3승은 8
        powerByExp(10,0); //10의 0승은 1
    }

03. 반환값 (return)

  • 메소드를 수행했을 때 어떤 값을 반환해서, 메소드를 호출 하면 그 반환된 값을 받아서 어떤 기능을 처리하는 것
  • 반환? 어떤 기능의 수행 결과를 받는 것
  • 메소드 선언 시 void 대신 반환값의 자료형으로 대체
	//반환 방법 1
	public static String getAcrivity(){
    	String activity = "볼링장, 탁구장, 노래방";
        return activity;
    }
    
    //반환 방법 2
    public static String getAcrivity(){
        return "볼링장, 탁구장, 노래방";
    }
    
    //호출 방법 1
    public static void main(String[] args) {
    	String contactActivity = getAcrivity();
        System.out.println("호텔 액티비티 : " + contactActivity);
        }
    
    //호출 방법 2
    public static void main(String[] args) {
    	System.out.println("호텔 액티비티 : " + getAcrivity());
        }
    
    
  • 전달값과 반환값이 함께 있는 메소드
	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;
        for (int i = 0; i < exponent; i++) {
            result = result * number;
        }
        return result;
    }
    
    public static void main(String[] args) {
        int retVal = getPower(2);
        System.out.println(retVal); //4

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

        retVal = getPowerByExp(3,3);
        System.out.println(retVal); //27
        
        System.out.println(getPowerByExp(2,4)); //16

    }

04. 메소드 오버로딩 (overloading) 🌕

이름이 같은 메소드를 얼마든지 중복해서 선언하는 것

  • 메소드 오버로딩 조건
    -조건1. 전달값의 타입이 다를 때
    -조건2. 전달값의 갯수가 다를 때
    -단, 반환값의 타입이 다르면 오버로딩 할 수 없다!!
	public static int getPower(int number){
    	int result = number * number;
       	return result;
    }
    
    //전달값의 타입이 다를 때 
    public static int getPower(String strNumber){
    	int number = Integer.parseInt(strNumber);
        retrun number * number;
    }
    //전달값의 갯수가 다를 때
    public static int getPower(int number, int exponent){
    	int result = 1;
        for(i = 0; i < exponent; i++){
        	result = result * number;
        }
        return result;
    }
    
    //메소드 호출
    public static void main(String[] args) {
        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
    }

05. 메소드가 필요한 이유?

  • 코드의 중복을 줄일 수 있다.
    -같은 동작을 하는데에 활용되는 값만 다를 경우, 메소드로 만들기
	//메소드 내에서 또 다른 메소드 호출 가능
    public static int getPower(int number){
        return getPower(number,2); 
    }

06. 변수의 범위 (scope)

  • 메소드를 사용하게 되면 사용할 수 있는 변수의 범위가 중요해진다!
  • 지역 변수 : 변수가 선언된 중괄호 영역 내에서만 사용할 수 있는 변수
    -중괄호를 벗어나게 되면 다른 곳에서는 쓸 수 없다!
    -지역변수의 초기화는 필수
    -예시)
    main영역에서 선언한 변수는 main영역 내에서만 사용 가능
    for반복문에서 선언된 i 역시 for문 안에서만 사용 가능
	 //다른 메소드에서 선언된 변수를 사용하고 싶다면
     public static void methodA(int number){
        //전달값을 이용해서 메소드 호출할 때 그 값을 전달하는 식으로 사용
    }
    public static void main(String[] args) {
    	int number = 3; //지역변수 
		for (int i = 0; i < 5; i++) { //지역변수 I
            System.out.println(i);
        }
        //System.out.println(i); 사용불가
    }

07. main 메소드

  • 자바 프로그램이 실행 될 때 가장 처음으로 진입하는 main 영역
  • 반환형은 없고, 문자열을 여러개 가지고 있는 String 배열을 전달값으로 받는 메소드
    -main 메소드를 호출할 때 전달받는 값에 따라서 프로그램의 동작을 다르게 할 수 있다
 	//전달값 출력
    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 메뉴 중 하나를 입력하세요.");
        }
    }	
  • main메소드에 전달값 추가 방법
    -Run -> Edit Configurations -> + -> Application -> name 설정 -> main class 지정 -> program arguments에 전달값 작성

0개의 댓글