본문 바로가기

코딩공부/JAVA

JAVA method [2] - 메소드의 입력 값

- 수업소개 -

메소드는 작은 프로그램이라고 할 수 있습니다. 입력값에 따라서 다양하게 동작하는 프로그램을 만들 수 있는 것처럼, 메소드도 입력값을 받아서 처리할 수 있도록 개선할 수 있습니다. 그 방법을 살펴보겠습니다.

 

앞서 만들었던 printTwoTimesA() 메소드의 아쉬운 부분이 있다. 만약 a 가 아니라 b를 출력하고 싶다면?

public class WhyMethod {

	public static void main(String[] args) {
		// 100000000 lines of code
		printTwoTimesA();
		// 100000000 lines of code
        printTwoTimesA();
	}

	public static void printTwoTimesA() {
		System.out.println("-");
        System.out.println("a");
        System.out.println("a");
	}
	 
}

 

다음과 같이 b를 두번 출력하는 printTwoTimesB() 메소드를 만들어서 사용할 수 있다. 하지만 이 코드도 효율적이지 못하다. 언제나 똑같은 결과를 가지는 리플레이 정도의 기능만을 가지고 있다.

public class WhyMethod {

	public static void main(String[] args) {
		// 100000000 lines of code
		printTwoTimesA();
		// 100000000 lines of code
        printTwoTimesA();
     // 100000000 lines of code
        printTwoTimesB();
	}

	public static void printTwoTimesA() {
		System.out.println("-");
        System.out.println("a");
        System.out.println("a");
	}
	public static void printTwoTimesB() {
		System.out.println("-");
        System.out.println("b");
        System.out.println("b");
	}
	 
}

 

앞서 사용했던 Math.floor(), println() 과 같은 메소는 입력값에 따라서 다르게 동작한다.

따라서, 메소드에 입력값을 주면, 그 입력값에 따라서 메소드가 다르게 동작하도록 하고 싶다.

 

public class WhyMethod {

	public static void main(String[] args) {
		        	  //인자, argument
		printTwoTimes("a", "-");
		// 100000000
		printTwoTimes("a", "*");
		// 100000000
		printTwoTimes("a", "&");
		printTwoTimes("b", "!");
	}

    								//매개변수,parameter 
	public static void printTwoTimes(String text, String delimiter) {
        System.out.println(delimiter);
        System.out.println(text);
        System.out.println(text);
    }
	 
}

 

  • 인자(Argument) : 메소드를 호출하면서 넘겨줄 값
  • 매개변수(Parameter) : 메소드 내에서 사용할 변수를 지정한다.

 

자바는 이렇게 해석한다.

"printTwoTimes 메소드를 정의하고 있다. 그리고 이 메소드의 괄호 안에 들어오는 첫 번째 값은 반드시 String 타입이고, 그렇게 들어온 값은 이 중괄호({}) 안에서 text라는 이름의 변수의 값이 되겠다. 두 번째 값은 String 타입이고 delimiter라는 변수의 값이 되겠다."

 

 

이전과 똑같이 동작하지만 코드는 훨씬 더 효율적으로 바뀌었다.

표현하고자 하는 텍스트가 무엇이냐에 따라서 메소드가 추가되는 그런 비효율적인 일을 더 이상 할 필요가 없어진 것이다.

 

main 메소드의 Argument(인자)

public static void main(String[] args){}

  • String[] : 문자열 배열 타입의 값을 받겠다
  • args : main 이라는 메소드를 자바가 실행할 때 입력해주는 입력값이 args로 들어오게 된다.
              즉, 사용자가 프로그램을 실행할 때 주입해준 변수를 main 함수 안에서 사용할 수 있게 된다.

[Run Configurations] > [Arguments] 탭에서 공백(space)을 구분자로 하여 인자 값을 두 개 입력한 뒤, [Apply]

 

main() 함수 내에서 브레이크포인트를 걸어준 뒤, 디버그 모드로 실행시키면, 매개변수 args의 [0] 번째와 [1] 번째에 각각 값이 저장된 것을 확인할 수 있다. 

 

[참고] - JAVA 입력과 출력