이번에는 지난 포스트에서 공부한 메소드로 직접 코드를 짜보겠습니다.
지난 포스트
메소드를 만들 때에는 public static void main(String[] args) { } 밖에서
간단한 뺄셈 메소드를 만들어볼 겁니다.
그전에 설명을 드려야 할 것이 한 가지 있습니다.
설명을 위해서 오랜만에 이클립스를 캡처했습니다.
위와 같이 메소드를 배우기 위한 클래스를 만들었습니다.
여기까지 와서 클래스 생성을 못하시는 분은 없을 거라고 생각하지만, 혹시 모르니 가져와봤습니다.
클래스 만드는 법은 위의 포스트를 참고해주세요.
지금까지 공부했던 내용들의 코드를 작성했을 때에는 무조건 main 안에서 작성을 했었습니다.
그런데 메소드를 만들 때에는 main의 밖에서 코드를 써야 합니다.
파란 화살표가 가리키는 { 중괄호를 클릭해봅시다.
그러면 그 중괄호의 짝이 어디에 있는지, 어디가 main이 끝나는 지점인지 이렇게 표시가 됩니다.
그 밖에서 코드를 쓰기 시작해야 합니다.
빼기 메소드를 만들어 봅시다
package 메소드기초;
public class Ex01_메소드_구조 {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
// 메소드 생성
// class 안쪽, main 바깥 쪽에 메소드 생성
// 1. 접근 제한자
// 2. 리턴 타입==결과값
// 3. 메소드 이름
// 4. (매개변수==입력값)
// 5. {로직}
// 6. 반환해줘야 하는 결과값 return
// 메소드 사용 시 주의할 점
// 1) return 키워드를 만나면 메소드는 끝난다 -> return 밑에 코드 작성하지 말 것
// 2) 내가 처음에 정해준 리턴타입과 return 결과값은 자료형이 동일해야한다.
// 3) return은 딱 한번만 가능하다. 단 하나의 결과값만 되돌려줄 수 있다.
// 2개의 정수형 매개변수를 받아서 뺀 결과값을 되돌려주는 minus 메소드 생성
public static int minus(int n1, int n2) {
int result = 0; // 되돌려줄 결과값 미리 만들어놓기
result = n1 - n2; // 로직 수행하기
return result; // 되돌려주기
}
}
일단 minus라는 이름의 빼기 메소드만 만들었습니다.
주석처리된 곳이 많이 보이죠?
대부분 다 지난 포스트에서 설명드렸던 내용들을 다시 써놓은 겁니다.
아까도 설명드렸듯이 class의 안쪽, main의 바깥쪽에 메소드를 생성해야 하고요,
[1] 접근 제한자
[2] 리턴 타입 (결과값)
[3] 메소드 이름
[4] ( 매개변수 (입력값) )
[5] { 로직 }
[6] 반환해줘야 하는 결과값 return
순서로 코드를 작성해야 합니다.
그런데 지난 포스트에서 알려드리지 않은 키워드가 하나 더 들어가 있습니다.
접근 제한자인 public과 리턴 타입인 int 사이에 있는 static인데요..
이 스태틱static이 뭘 의미하는 것인지는 지금은 모르셔도 됩니다. (라고 선생님께서 말씀하셨습니다.)
이건 지금 설명을 들어봤자 이해도 못할 내용이고, (실제로 구글에서 찾아서 읽어봐도 뭔 소린지 도통 모르겠더군요..)
static에 대한 것은 자바를 끝까지 다 배우고 나서 들어도 이해가 될까 말까 한 녀석이라고 하니 일단 넘어갑시다.
그냥 'main 메소드에도 static이 쓰여있으니, 우리가 만들 빼기 메소드에도 static을 써넣어줘야 한다.' 정도로만 생각하시면 될 것 같습니다. (라고 선생님께서 말씀하셨습니다.)
그리고 방금 말씀드렸지만, 우리들이 지금까지 main 안에서만 코드를 작성해왔었는데, 그 main도 메소드였습니다.
신기하지 않나요? 저만 그랬나..
package 메소드기초;
import java.util.Scanner;
public class Ex01_메소드_구조 {
public static void main(String[] args) {
// 사용자로부터 숫자 2개를 입력
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 숫자 입력 >> ");
int num1 = sc.nextInt();
System.out.print("두 번째 숫자 입력 >> ");
int num2 = sc.nextInt();
sc.close();
// 실행시키는 공간
// 메소드 이름을 불러주기 -> 메소드 사용
int res = minus(num1,num2);
System.out.println(res);
}
public static int minus(int n1, int n2) {
int result = 0;
result = n1 - n2;
return result;
}
}
위의 코드로 빼기 메소드의 생성과 사용까지 가능하게 되었습니다.
많은 과정들이 생략되었지만, 지금까지 배운 내용들로 위의 웬만한 코드들은 다 이해를 하실 거라고 생각합니다.
설명을 드려야 할 부분은
int res = minus(num1,num2);
이 코드뿐입니다.
res라는 이름의 int 타입 변수를 만들었고, 그 안에 minus()를 대입시켰습니다.
main의 아래에 만들어둔 메소드를 그냥 대입시킨 겁니다.
p.s. 대부분의 코드들은 위에서 아래의 순서로 동작하지만, 메소드에서는 아래에 만들어둔 메소드를 위에서 불러오는 것이 가능합니다.
minus(num1, num2)라는 코드로 인해 키보드로 입력받은 변수인 num1과 num2가 minus 메소드 안에서 짜둔 로직으로 인해 저절로 뺄셈을 실행하게 됩니다.
위의 코드는 메소드가 어떻게 동작하는지, 그 구조를 살펴보기 위한 예였기 때문에 코드가 너무 간단합니다.
'그래서 이걸 왜 쓰는 거지?', '빼기 메소드를 안 만들고 그냥 main 안에서 산술연산자로 빼기를 하는 편이 더 코드가 짧은거 아니야?'라고 의문이 생기시는 분들도 계실 텐데요..
지난 포스트에서도 말씀드렸지만, 메소드는 반복적으로 사용되는 코드를 최소화하기 위해서 사용하는 것입니다.
만약 메소드 안의 로직이 굉장히 복잡하고, 천 줄이 넘는 복잡한 코드들이 짜여져 있고, 그 코드를 자주 사용해야 할 일이 있다면..? 그런 때에 메소드는 굉장히 필요한, 없어서는 안 될 강력한 무기가 될 것입니다.
다음 포스트
이 글이 도움이 됐다면 하단의 ♡ 공감 버튼을 꾹 눌러서
빨간 하트♥로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS에 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.
'그 외 프로그래밍 언어 > Java' 카테고리의 다른 글
자바, 메소드(method) 실습 (0) | 2021.12.11 |
---|---|
자바, 리턴 타입이 없는 메소드 (feat. void) (0) | 2021.12.11 |
자바, 메소드(method)의 기본 구조 (0) | 2021.12.05 |
자바, 2차원 배열의 중복되는 코드를 for문으로 줄이기 (0) | 2021.12.04 |
자바, 2차원 배열 (0) | 2021.12.04 |
댓글