2022년 3월 1일 화요일
수업소개
Method란 것은 funtion이라고도 할 수 있다.
'복잡한 것을 정리해서 다시 단순하게 만드는 정리정돈의 기구'
2022년 3월 1일 화요일
이미 익숙한 메소드
public class FirstMethod {
public static void main(String[] args) {
System.out.println("Hello Method");
System.out.println(Math.floor(1.1));
}
}
JAVA에서 Class(ex.FirstMethod)를 만들때 public static void main 이라는 코드가 있고 그 아래에는 실행되었으면 하는 코드들이 나열되어 있는데 그 자체가 이미 Method이다. 그러니 우리는 항상 특정 Class에 필요한 Method를 만들어 왔었던 것이다.
메소드의 기본 형식
System.out.println("-");
System.out.println("A");
System.out.println("A");
대충 이런코드가 엄청 많다고 쳤을때 이것을 만약 수정하고 싶으면 일일히 다 수정해야 하거나 하는 귀찮음이 있다. 그래서 저 코드를 printTwoTimesA라는 이름으로 Method화 시킨다면
public static void printTwoTimesA() {
System.out.println("-");
System.out.println("A");
System.out.println("A");
}
이렇게 만들 수 있고, 추후에는 printTwoTimesA(); 이렇게 입력하기만 해도 결과값이 나오면서 코드를 단순화할 수 있게 되는 것이다.
Refactor>Extract Method를 통해 범위를 잡은 코드를 Method화 시키는 방법도 있다. 그러면 자연스럽게 method화에 필요한 정의? 정리정돈 시킬 코드들은 아래에 입력된다 .
메소드의 입력
입력값에 따라 다르게 출력하고 싶다. 예를들어 a,b,c가 출력됐으면 좋겠다.
그러면 printTwoTimesB나 C를 만들어서 Method들을 새로 만드는 것도 나쁘지 않지만,
입력값에 따라 다르게 출력되게 하는 식으로 코드를 만져보자
printTwoTimes( );로 A를 뺀 후에 이 Method를 어떻게 설정할 것이냐 하면
public static void printTwoTimes(String text) {
System.out.println("-");
System.out.println(text);
System.out.println(text);
}
이게 설정 했 경우 문자열 DataType의 text가 입력될 것이고 그것에 따라 다른 값을 출력하게 할 수 있는 것이다.
printTwoTimes("a");
printTwoTimes("b");
printTwoTimes("c");
인경우 결과값이 [ - a a - b b - c c ]이렇게 입력값을 반영하게 할 수 있는 것이다.
구분자(delimiter)같은 경우도 (String text, String delimiter)이렇게 값을 하나 더 입력할 것이라는 것을 알려주고 "-"를 delimiter라는 입력값으로 설정할 수 있게 해주면
printTwoTimes("a", "-"); 이렇게 해줌으로 인해 동일한 결과값, 그러나 구분자를 자유롭게 설정할 수 있게 되는 것이다.
★public static void main ( String[] args) {
args는 main이라는 method를 java가 실행했을때 입력해주는 입력값이 args를 통해 들어온다. Run configuration의 argument에서 입력값을 설정할 수 있다.
메소드의 출력
Method output
Method의 return뒤에 있는 값이 그 method의 실행 결과값이 된다. 그리고 return값은 그 method를 종료시키는 역할도 한다. Return뒤에 아무리 많은 값이 있어도 return에서 끝나게 되어 있다.
Method는 그 method의 return값의 datatype을 정해주어야 한다. (ex.Int면 정수 / void는 return값이 없다는 것을 의미!)
printTwoTimes("a", "-");
System.out.println(twoTimes("a", "-"));
위 두코드는 기본적으로 결과값 자체는 같을 수 있느나 twoTimes는 화면에 출력하지 않고 return값을 가지기에 여러군데에 사용이 가능해진다.
▶출력할때 사용하는 핵심적인 키워드는 return이고 어떤 datatype을 return할 것인지 직접 지정해주어야 한다!