본문 바로가기
Programming/JAVA

6-1 메소드에 대한 이해와 메소드의 정의

by CGS 2019. 4. 2.

계속 예제를 작성할 때마다 main 이라는 이름을 가진 메소드를 정의하고 있습니다.

 

이번엔 이 메소드가 실행되는 원리를 이해함으로써 메소드의 기본성질을 파악해봅시다.

 

앞선 예제들로 우리는 메소드의 이름은 main이고 중괄호 안에서 위에서 아래로 순차적으로 실행된다는 것을 알고 있습니다.

 

왜 메소드의 이름이 main이냐하면 자바 프로그램의 시작은 main이라는 이름의 메소드를 실행하는 데서부터 시작한다는 약속에 근거합니다.

 

메소드의 이름을 main이라 하지않고 지을수도 있습니다.

 

public class MethodDefAdd {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("프로그램의 시작");

hiEveryone(12);

hiEveryone(13);

System.out.println("프로그램의 끝");

}

 

public static void hiEveryone(int age) {

System.out.println("좋은 아침입니다.");

System.out.println("제 나이는 "+age+"세입니다.");

 }

}

 

hiEveryone 이라는 이름의 메소드를 정의해준 후에 main메소드 안에서 hiEveryone() 이라는 명령으로 메소드를 호출하였습니다.

hiEveryone 메소드 옆의 괄호는 변수명이고, 정수형 값만 전달 받습니다. 이것을 "매개변수"(Parameter)라고 합니다. 따라서 호출할때 12 13이 각각 들어가게 됩니다. main메소드 옆의 String[] args 또한 일종의 변수 선언입니다. 추후에 설명할 기회가 있으면 설명하도록 하겠습니다.

 

전달되는 값의 자료형과 메소드의 매개변수 자료형은 항상 일치해야 합니다.

메소드의 매개변수는 아예 없거나, 두개, 세개, 여러개가 될 수도 있습니다.

public class MethodDefAdd {

 

     public static void main(String[] args) {

                // TODO Auto-generated method stub

                System.out.println("프로그램의 시작");

               

                double myHeight=175.9;

                hiEveryone(12,12.5);

                hiEveryone(13, myHeight);

                byeEveryone();

               

                System.out.println("프로그램의 끝");

 

     }

    

     public static void hiEveryone(int age, double height) {

                System.out.println("좋은 아침입니다.");

                System.out.println("제 나이는 "+age+"세입니다.");

                System.out.println("제 키는 " + height + "cm 입니다.");

     }

    

     public static void byeEveryone() {

                System.out.println("다음에 뵙겠습니다.");

     }

 

}

이렇게 두개의 매개변수를 사용할 수도 있고, 아예 매개변수가 없는 메소드를 만들수도 있습니다.메소드는 값을 전달받기도 하지만, 호출한 영역으로 값을 반환할 수도 있습니다.

 

public class MethodReturns {

 

     public static void main(String[] args) {

                // TODO Auto-generated method stub

                int result=adder(4, 5);

                System.out.println("4 5의 합 : " + result);

                System.out.println("3.5의 제곱 : " + square(3.5));

 

     }

    

     public static int adder(int num1, int num2) {

                int addResult = num1+num2;

                return addResult;

     }

    

     public static double square(double num) {

                return num*num;

     }

 

}

 

main 옆에 void 라는 키워드는 메소드가 값을 반환하지 않는다(호출한 영역으로 값을 전달하지 않는다.)는 의미입니다.

 

메소드의 이름 왼편엔 메소드가 반환하는 값의 정보를 삽입하게 되어있습니다. 지금까지 작성한 예제들은 값을 반환하지 않기 때문에 void를 사용했습니다.

 

이 예제의 왼편에 보면 int double로 반환할 자료형이 명시되어있습니다.

 

return은 값의 반환을 명령하는 키워드입니다.

 

adder메소드에서 addResult에 저장된 값을 반환하게 됩니다.

 

return문이 실행되면 메소드는 종료가 되고, 메소드를 호출한 영역으로 값이 반환됩니다.

 

return문은 값의 반환과 메소드의 종료라는 두가지 의미를 가집니다.메소드 중간에 return문이 실행되면 메소드의 나머지 부분은 실행이 이뤄지지 않고 메소드를 빠져나가게 됩니다.

 

반환형이 void인 메소드 내에서도 return문은 사용될 수 있습니다. 반환의 대상만 명시하지 않으면 됩니다.

 

 

 

 

*작성하다가 인터넷이 끊어지는 바람에 다시 쓰느라 많이 조잡하네요..ㅜㅜ

'Programming > JAVA' 카테고리의 다른 글

6-3 메소드의 재귀호출  (0) 2019.04.19
6-2 변수의 스코프  (0) 2019.04.11
5-5 반복문의 중첩  (0) 2019.03.25
5-4 continue & break  (0) 2019.03.09
5-3 for, while, do~while  (0) 2018.10.13