[Java] 메소드(1)

Date:     Updated:

카테고리:

태그:

java.png

메소드란?

메소드(method)는 어떤 특정 작업을 수행하기 위한 명령문의 집합

메소드 사용목적

  1. 중복되는 코드를 메소드로 만들어 코드 반복사용을 피할 수 있다
  2. 코드이 가독성이 좋아진다
  3. 기능변경이 필요한 경우 메소드 부분만 수정하면 되기 때문에, 손쉬운 유지 보수가 가능하다

메소드의 호출방법

  • 클래스명 사용할이름 = new 클래스명(); //객체생성
  • 사용할이름.메소드명(); //메소드 호출
package com.ohgiraffers.section01.method;

public class Application1 {

    public static void main(String[] args) {
        
        System.out.println("main() 시작됨...");

        Application1 app = new Application1();

        app.methodA();

        System.out.println("main() 끝...");

    }

        public void methodA() {

        System.out.println("뱀 선생님 출근입니다!!");

        methodB();

        System.out.println("뱀 선생님 퇴근입니다!!");


    }

        public void methodB() {

        System.out.println("9시 30분에 수업을 시작합니다");

        methodC();

        System.out.println("6시 20분에 수업을 끝냅니다");

    }

        public void methodC() {

        System.out.println("점심시간 시작 1시 30분입니다");

        System.out.println("점심시간 끝은 2시 30분입니다.");
        
    }
}

  • 출력값
main() 시작됨...
뱀 선생님 출근입니다!!
9시 30분에 수업을 시작합니다
점심시간 시작 1시 30분입니다
점심시간 끝은 2시 30분입니다.
6시 20분에 수업을 끝냅니다
뱀 선생님 퇴근입니다!!
main() 끝...

다른 흐름의 메소드 호출 흐름에 대해 이해할 수 있다

  1. methodA(), methodB(), methodC() 를 차례대로 작성한다
  2. 작성 후 메소드 호출 확인과 실행 종료 출력 구문을 확인하고 다시 현재 위치로 돌아온다
  3. 메인메소드 시작을 확인하기 위한 출력 구문을 작성한다
package com.ohgiraffers.section01.method;

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

        System.out.println("main 시작");
        /* 4. methodA(), methodB(), methodC()를 차례대로 호출*/
        Application2 app2 = new Application2();
        app2.methodA();
        app2.methodB();
        app2.methodC();

        /*5.메인 메소드 종료를 확인하는 출력구문을 작성한다.*/

        System.out.println("main 끝");

        /*6.main을 실행하여 전체적인 소스 흐름을 파악한다.*/

    }

    public void methodA(){

        System.out.println("정규수업 시작함");

        System.out.println("정규수업 끝남");
    }

    public void methodB(){

        System.out.println("취업특강 시작함");

        System.out.println("취업특강 끝남");

    }

    public void methodC(){

        System.out.println("선생님과 상담하는 날입니다.");

        System.out.println("선생님과 상담이 끝났습니다.");


    }

}
  • 출력값
main 시작
정규수업 시작함
정규수업 끝남
취업특강 시작함
취업특강 끝남
선생님과 상담하는 날입니다.
선생님과 상담이 끝났습니다.
main 끝

메소드 전달인자와 매개변수에 대해 이해하고 메소드 호출 시 사용할 수 있다

  • 전달인자(argument)와 매개변수(parameter)를 이용한 메소드 호출
  • 지금까지 공부한 변수는 지역변수에 해당한다

변수의 종류

  1. 지역변수
  2. 매개변수
  3. 전역변수(필드)
  4. 클래스(static)변수

지역변수는 선언한 메소드 블럭 내부에서 사용이 가능하다. 이것을 지역변수의 스코프라고한다 다른 메소드간 서로 공유해야하는 값이 존재하는 경우 메소드를 호출시 괄호를 이용해서 값을 전달할 수 있다 이때 전달하는 값을 전달인자(argument)라고 부르고 메소드 선언부 괄호안에 전달 인자를 받기 위해 선언하는 변수를 매개변수(parameter)라고 부른다

package com.ohgiraffers.section01.method;

public class Application3 {

    public static void main(String[] args) {
        
        Application3 app3 = new Application3();
         /* 전달인자와 매개변수를 이용한 메소드 호출테스트 */
        /*1. 전달인자로 값 전달 테스트*/
        app3.testMethod(40);
        //app3.testMethod("40"); //매개변수는 int형이지만 인자 String이기 때문에 호출할 수 없다.
        //app3.testMethod(20,30,40); //매개변수는 int이지만 인자는 3개이기 때문에 호출할 수 없다.

        /* 2. 변수에 저장한 값 전달 테스트 */
        /* 2-1. 변수에 저장한 값을 이용하여 값을 전달할 수 있다.*/
        int age= 20;
        app3.testMethod(age);

        /* 2-2 자동형변환을 이용하여 값을 전달할 수 있다.*/
        byte byteAge = 10;
        app3.testMethod(byteAge);

        /*2-3.강제형변환을 위용하여 값을 전달할 수 있다.*/
        long longAge = 80;
        //app3.testMethod(longAge); //자동 형변환을 할 수 없어서 에러발생
        app3.testMethod((int) longAge); //데이터 손실의 주의

        /*2-4. 연산결과를 이용해서 값을 전달할 수 있다.*/
        app3.testMethod(age + 3);

    }

    public void testMethod(int age){

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

    }

}
  • 출력값
당신의 나이는 40세 입니다.
당신의 나이는 20세 입니다.
당신의 나이는 10세 입니다.
당신의 나이는 80세 입니다.
당신의 나이는 23세 입니다.

여러개의 전달인자를 이용한 메소드 호출 테스트

package com.ohgiraffers.section01.method;

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

        /*수업목표. 여러개의 전달인자를 이용한 메소드를 호출할 수 있다.*/
        /* 여러 개의 전달인자를 이용한 메소드 호출 테스트*/

        /* 1.여러 개의 매개변수를 가진 메소드 호출 */
        Application4 app4 = new Application4();
        app4.testMethod("홍길동",20,'남');
       // app4.testMethod(20,"유관순",'여');  //값의 갯수는 맞지만 순서가 다르게 전달되면 호출하지 못합니다.

        /* 2.변수에 저장된 값을 전달하여 호출할 수 있다.*/
        String name = "유관순";
        int age = 20;
        char gender = '여';

        app4.testMethod(name, age, gender);

    }

    public void testMethod(String name, int age, final char gender){

        System.out.println("당신의 이름은 "+name+ "이고, 나이는 " +age+ "세 이며 성별은 " +gender+ "입니다.");
    }
}
  • 매개변수도 일종의 지역변수로 분류된다.
  • 매개변수도 final 키워드를 사용할 수 있다
  • 지역변수에서 final 키워드를 붙여 상수를 만드는 것과 동일하다
  • final의 매개변수는 상수 네이밍 규칙을 선택적으로 따르는 경향이 있다.
  • 출력값
당신의 이름은 홍길동이고, 나이는 20세 이며 성별은 남입니다.
당신의 이름은 유관순이고, 나이는 20세 이며 성별은 여입니다.

메소드에 들어서면서부터 점점 어려워지고 있다.. 그래도 어려워져야 전문적이지 너무 쉬우면 재미없자나!~!

Java 카테고리 내 다른 글 보러가기

댓글 남기기