-
12 - 생활코딩 자바강의 정리(메소드)TIL 2023. 1. 24. 23:49
[목차]
- 메소드란
- 정의와 호출
- 메소드가 없다면
- 입력값
- 출력값
메소드란
- 객체 지향 프로그래밍에서 객체와 관련된 서브 루틴(함수) 데이터와 맴버 변수에 대한 접근 권한을 갖습니다.
- 개발자가 특정한 행동을 정의하면 그 행동을 호출하면 프로그램에서 그대로 실행하는 것을 의미합니다.
public static void main(String[] args) { return }
정의와 호출
- 직접 메소드를 만드는 것을 정의라고 하고 만든 메서드를 실행하는 것을 호출이라고 합니다.
/* 메서드 정의 */ // numbering()안에 있는 데이터를 정의하고 main안에 있는 numbering()호출을 함 public static void numbering() { // i 의 초기값 0 int i = 0; // i 가 10보다 작을 때 while안에 있는 코드 동작 while (i < 10) System.out.println(i); // 1씩 증가 i++ } /* 메서드 호출 */ public static void main(String[] args) { // numbering() : 메서드 호출 numbering(); }
메소드가 없다면
- 코드랑이 많아지고 코드를 하나하나 다 바꿔야하기 때문에 유지보수가 힘들어집니다.
- 메소드의 장점:
- 코드랑이 적어지고 유지보수유리 합니다.
- 자주 사용하는 로직을 메소드(함수)로 만들어두면 호출하는 것을 통해서 간편하게 로직을 재활용할 수 있습니다.
메소드가 없다면 0 ~ 9까지 출력하는 코드를 5번 호출하게 하려면 이렇게 코드를 짜면 된다 public static void main(String[] args) { int i = 0; while (i < 10) System.out.println(i); i++ }
메소드를 5번 호출 public static void numbering() { int i = 0; while (i < 10) System.out.println(i); i++ } public static void main(String[] args) { numbering(); numbering(); numbering(); numbering(); numbering(); }
입력값
// numbering(매개변수) public static void numbering(int limit) { int i = 0; while (i < limit) System.out.println(i); i++ } public static void main(String[] args) { // numbering(2) : numbering()을 만나면 numbering을 호출하기 위해 // numbering이름으로 정의한 메소드로 가서 메개변수에 int limit에 2를 넣습니다. numbering(2); } // 매개변수에 int limit가 없다면? public static void numbering() { int limit = 2 int i = 0; while (i < limit) System.out.println(i); i++ } public static void main(String[] args) { numbering(); } /* 여러개의 인자값 */ // 여려개의 인자값을 넣을려면 ,로 구분해서 넣으면 됩니다. // numbering(매개변수) 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(3, 5); } // 결과값 : 3 4
출력값
- 데이터를 리턴하는 이유는: 부품으로서의 가치를 높이기 위해서 입니다.
public static String numbering(int init, int limit) { int i = init; // 만들어지는 숫자들을 output이라는 변수에 담기 위해서 변수에 빈 값을 주었습니다/ String output = ""; while (i < limit) { // 숫자를 화면에 출력하는 대신 변수 output에 담았습니다. output += i; i++ } /* output에 담겨 있는 문자열을 메소드 외부로 반환하려면 아래와 같이 return을 배치하면 됩니다. */ // String return output } // void : 메소드의 return값은 존재하지 않는다고 선언 합니다. // return 사용하지 않음 public static void main(String[] args) { // 메소드 numbering이 리턴한 값이 변수 result에 담긴다. String result = numbering(1, 5); // 변수 result의 값을 화면에 출력합니다. System.out.println(result); }
메소드가 출력한 값을 화면에 출력하는 것이 아니라 파일에 기록하고 싶다면 어떻게 해야할까요?
출력, 파일, 이메일을 한번에 하고 싶다면 3개의 매소드를 만들고 용도에 따라서 코드를 재작성하는 방법이 있습니다
하지만 이것보다 좋은 방법이 있습니다. 숫자를 파일에 기록하고, 숫자로 이메일을 보내는 작업으로부터
숫자를 계산하는 로직을 분리하는 것 입니다.
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); try { // 무시 // 다음 행은 out.txt 라는 파일에 numbering이라는 메소드가 반환한 값을 저장합니다. BufferedWriter out = new BufferedWriter(new FileWriter("out.txt")); out.close(); } catch (IOException e) { } // 무시 }
return
- return은 메소드를 중단시키는 역할도 합니다.
// 결과값: 1로 됩니다. 자바는 리턴을 만나는 순간에 리턴 뒤에 따라오는 값을 // 밖으로 반환하면서 종료시킵니다 // 하지만 컴파일을 하면 에러가 납니다. 도달할 수 없는 코드가 있기 떄문에 실수한 것이 아닌가? 라고 // 생각을 해서 에러가 납니다. public static int one() { return 1; return 2; return 3; } public static void main(String[] args) { System.out.println(one()); }
복수의 리턴
public static String getMember1() { return "최진혁"; } public static String getMember2() { return "최유빈"; } public static String getMember3() { return "한이람"; } public static void main(String[] args) { System.out.println(getMember1()); System.out.println(getMember2()); System.out.println(getMember3()); }
- 하나의 메소드가 최진혁, 최유빈, 한이람을 한번에 리턴하는 방법
public static String[] getMembers() { String [] members = { "최진혁", "최유빈", "한이람" }; return members; } public static void main(String[] args) { String [] members = getMembers(); }
'TIL' 카테고리의 다른 글
14 - 생활코딩 자바강의 정리(객체 지향 프로그래밍 오리엔테이션) (0) 2023.01.26 13 - 생활코딩 자바강의 정리(입력과 출력) (0) 2023.01.25 11 - 생활코딩 자바강의 정리(배열 for-each) (2) 2023.01.22 10 - 생활코딩 자바강의 정리(배열) (2) 2023.01.20 9 - 생활코딩 자바강의 정리(반복문) (0) 2023.01.19