1. 메소드 (함수)
메소드는 다른언어에서의 함수와 같은 개념이다. 자바는 객체지향적 언어로 설계되어 사용되기 때문에 메소드라고 불리운다. 이번 장은 메소드의 대하여 학습한 내용을 정리하였다.
메소드는 다음과 같은 형식으로 구성되어 있다.
public static void main(String[] args) {
return
}
여태까지 모든 예제에 가장 상위에 있었던 저 구문이 바로 메소드이다. 즉 우리가 여태까지 만들었던 예제들은 모두main이라는 함수 안에 작성되어 작동이 되었던 것이다. 메소드의 이름은 void 옆의 main이 있는 곳이 된다.
1-1) 메소드의 정의(Define)와 호출(Call)
자바도 다른언어와 마찬가지로 함수(메소드)를 정의하고 호출할 수 있다. 그 방법은 다음과 같다.
public class PracticeMethod {
public static void numbering() {
int i = 0;
while ( i < 10 ) {
System.out.println(i);
i++;
}
}
public static void main(String[] args) {
numbering(); // 123456789
}
}
우선 메소드를 정의할 수 있도록 PracticeMethod라는 클래스를 생성해준다. 그 후 클래스 안에 메소드 numbering()을 서 정의해주고 그 안에 코드를 작성한 것이다.
그 후 main이라는 메소드에서 앞서 정의한 클래스를 호출(numbering())하면 numbering에서 설계한 메소드가 실행이 되어 결과가 도출되는 것을 확인할 수 있다.
즉, 메소드를 정의하는 방법과 호출하는 방법은 다음과 같다.
// 메소드 정의법
public static void 함수명(인자) {
함수 로직
}
// 메소드 호출법
public static void main(String[] args) {
함수명(인자);
}
그렇다면 도대체 main 메소드는 무엇이고 왜 사용하고 왜 이것이 사용되는것인가?
main메소드는 규칙이다. 자바를 이용하여 프로그램을 구성하고 제작하여 실행하려면 반드시 main메소드 안에 모든 로직을 위치시켜야 한다. 이것은 java언어의 규칙이다.
java는 main메소드 안에 있는 로직들을 시키도록 약속이 되어있는 것이다.
1-2) 메소드의 입력(input)과 출력(output/return)
메소드는 프로그램의 유지/보수 방면에서 효율성을 갖기 위하여 사용하는 일종의 도구이다. 그러나 그저 내장되어있는 기능만 호출하여 사용하는데에만 사용이 국한되어있다면, 메소드의 효용성에 대하여 크게 공감을 하기 어려울 수 있다.
따라서 메소드에 값을 입력받고, 입력받은 값을 처리하여 출력할 수 있는 방법에 대하여 학습하였다.
public class PracticeMethod {
public static void numbering(int limit(매개변수)) {
int i = 0;
while (i < limit) {
System.out.println(i);
i++;
}
}
public static void main(String[] args) {
numbering(5(인자));
}
자바의 메소드 역시 매개변수와 인자로서 값을 입력받고 처리할 수 있다. 메소드를 선언하는 선언부에서 괄호( ( ) )안에 입력받을 값을 담을 변수를 선언하고 메소드 안의 로직에서 다시 사용하는 방식으로 구성되어있다.
인자(매개변수)는 다음과 같이 여러개를 받을 수 있다.
public static void numbering(int init, int limit) {
int i = init;
while (i < limit) {
System.out.println(i);
i++;
}
}
public static void main(String[] args) {
numbering(1, 5);
}
main 메소드에서 numbering 메소드를 호출하였을때, init과 limit의 인자값으로 1과 5를 각각 입력하였고, numbering 메소드에서는 init과 limit을 받아서 내부적으로 처리한 것을 확인할 수 있다.
메소드에 값을 입력하는 방법을 학습하였으면 이제 값을 출력하는 방법을 알아야한다. 이때 사용되는것이 타 언어에서의 return이다.
return은 메소드 내부에 있는 코드가 실행되어 어떠한 값이 나왔을때 메소드를 종료함과 동시에 메소드 내부에 도출된 결과값을 메소드 밖으로 내보내는 기능이 있다. 다음과 같다.
public static String numbering(int init, int limit) {
int i = init;
String output = "";
while (i < limit) {
output += i;
i++;
}
return output;
}
public static void main(String[] args) {
String result = numbering(1, 5);
System.out.println(result);
}
예제의 numbering으로 리턴과 메소드의 타입에 대해서 확인할 수 있다.
public static String numbering(int init, int limit) {
// void는 리턴할 값이 없이 메소드 내부에서 동작이 끝날 때 사용하는 것이다.
// numbering메소드는 문자열을 return 하니 String이라고 표시
int i = init;
String output = "";
// output에 빈 문자열을 할당하여 output을 초기화
while (i < limit) {
output += i;
// output = output + i
i++;
// i = i + 1
}
return output;
// 메소드 내부에서 선언된 output이라는 변수 안에 있는 값을 함수 밖으로 꺼내줌
}
numbering 이라는 메소드 내부에서 지역변수로서 i와 output을 선언하였다. 그리고 내부적으로 문자형 자료를 할당할 수 있는 변수인 output에 매개변수를 받아서 while문으로 숫자를 처리하여 순차적으로 할당하고 마지막으로 output의 값을 리턴하는 로직으로 되어있다.
이 때 주목해야할 점은 메소드 numbering 앞에 데이터 타입이다. 종래까지의 예제는 모두 void라고 표시하였다. 그 이유는 메소드가 끝나도 어떠한 값을 return하지 않았기 때문에 return할 값의 타입이 없었기 때문에 void라고 표시한 것이다.
그러나 상기의 예제는 String타입의 output안에 할당되어있는 값을 리턴하기로 되어있기 때문에 리턴하는 값의 데이터 형식을 메소드 앞에 표시하여야만 한다. 이것이 스크립트 언어와 자바의 차이인 것이다.
'Language > Java' 카테고리의 다른 글
공부내용 정리 Java :: 기초 2 - 객체지향 I (0) | 2021.06.16 |
---|---|
공부내용 정리 Java :: 기초 VII (0) | 2021.06.16 |
공부내용 정리 Java :: 기초 V (0) | 2021.06.14 |
공부내용 정리 Java :: 기초 IV (0) | 2021.06.14 |
공부내용 정리 Java :: 기초 III (0) | 2021.06.14 |