티스토리 뷰
day8 190227 자바의 메소드에 대해서 배워봤습니다.
저번 시간 클래스부터 슬슬 점점더 프로그래밍 다워 지는군요..
점점 더 흥미가 붙는 것 같습니다.
<필드> : 객체가 가지고 있는 고유한 값
<메소드> : 객체의 동작에 해당되는 블록
수행문을 가지고 있는 이름이 있는 코드 블록
(이름, 입력, 출력, 동작)
(메인 함수 역시 메소드이다. :: void출력, main이름, String입력)
(메소드는 여러가지를 반환할 수 없다.)
--리턴값 : 메소드 실행결과로 제공되는 값
*클래스 내의 필드, 기능 등을 사용하려면, 객체를 생성해야한다.( 리모콘의 기능으로 사용)
*메소드의 필요성 : 동일한 작업이 반복될 때.
--메소드의 구조--
: 출력 이름(입력) { // 입력에는 입력되는 값의 타입과 변수명이온다. 입력 = 매개변수
동작(수행문) // 출력에는 반환되는 리턴값의 타입을 적는다.
동작(수행문)..
}
:#1 //반환값이 없는 메소드 --> 동작의 수행이 목적
void 메소드이름(입력값타입 변수명, 입력값타입 변수명,...) {
수행문;
수행문;
}
-->실행할 때 :리모콘.메소드이름();
리모콘.메소드이름(입력값, 입력값,...);
:#2//반환값이 있는 메소드 --> 동작 수행 후 값의 제공이 목적
반환값타입 메소드 이름(입력값타입 변수명, 입력값타입 변수명,...) {
수행문;
수행문;
return 값;
}
-->실행할 때 : 반환타입 변수명 = 리모콘.메소드이름();
반환타입 변수명 = 리모콘.메소드이름(입력값, 입력값,...);
ex)1. 검색어를 입력받아서 검색결과를 제공하는 기능
String[] search(String keyword) { // String배열
....
....
return 검색결과;
}
ex)2. 학번을 입력받아서 그 학생의 정보를 삭제하는 기능
void deleteStudent(int studentNo) {
....
....
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Hello { // 메소드 정의 // 입력,출력 없음, 동작 있음 void morning() { System.out.println("좋은 아침입니다."); System.out.println("좋은 하루 보내세요."); } // 메소드 정의 // 입력값 있음, 반환값 없음, 동작 있음 void greeting(String x) { System.out.println(x + "님 반갑습니다."); } // 메소드 정의 // 입력값 있음, 반환값 없음, 동작 있음 void promise(String name, int hour) { System.out.println(name + "님 " + hour + "시에 만납시다." ); } } | cs |
다음은 Hello라는 객체에 세 가지 종류의 메소드를 정의해보았습니다.
3~8행의 메소드는 입,출력이 없고 동작이 있는 기본적인 메소드로, 제공을하는 동작만을 하는 void반환 타입의 메소드입니다.
10~14행은 입력값과 동작이 있는 메소드입니다. 마찬가지로 출력제공의 동작 뿐으로, void를 반환타입으로 쓰고, String타입의 입력값을 요구하므로, 12행 매개변수의 칸에 String x의 변수를 적어주게 됩니다.
1 2 | String username = "김다윤"; hello.greeting(username); |
Hello hello = new Hello(); 소스로 Hello 클래스를 사용하기 위한 hello객체를 생성해주고 나서,
greeting메소드를 사용할 때, 2행과 같이 사용합니다. 이때, greeting은 입력값을 필요로 하므로 사전에 1행과 같이, 타입에 맞는 변수를 준비해서 매개변수 칸에 적어줍니다.
실행을 한다면, 김다윤님 반갑습니다. <<<와 같이 나오게 됩니다.
1 2 3 4 5 6 7 8 | // 메소드 정의 // 입력값 있음, 반환값 있음, 동작있음 int plus(int x, int y) { int z = x + y; return z; // return키워드는 메소드를 호출한 곳에 z에 보관된 값을 제공. } // 리턴값 z, plus메소드의 반환 타입은 리턴값 z의 타입인 int여야함(6행) | cs |
위 소스는, 입력값과 반환값, 동작이 모두있는 메소드입니다. 매개변수 int x, int y를 입력받아 덧셈을 시킨 후, z에 반환시키는 더하기 기능의 메소드로, 반환하는 z의 타입이 int형이므로 앞 메소드들과는 달리 반환타입void자리에 int를 적고 7행처럼 return키워드를 사용하여, z를 반환 시킨다는 것을 적어줍니다.
조금 더, 응용 심화 시킨 메소드를 보시겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | public class ArrayUtils { // 정수로 이루어진 배열을 전달받아서 출력하는 기능 void printArray(int[] items) { for (int x : items) { System.out.print(x + "\t"); } System.out.println(); } // 정수로 이루어진 배열을 전달받아서 가장 큰 값을 제공하는 기능 int maxArray(int[] items) { int max = 0; for(int x : items) { if (max < x) { max = x; } } return max; } // 정수로 이루어진 배열을 전달받아서 가장 작은 값을 제공하는 기능 int minArray(int[] items) { int min = 100; for(int x : items) { if (min > x) { min = x; } } return min; } // 정수로 이루어진 배열을 전달받아서 값을 그 값의 2배로 이루어진 배열을 제공하는 기능 int[] twiceArray(int[] items) { int[] result = new int[items.length]; for(int x=0; x < result.length; x++) { result[x] = items[x] * 2; } return result; } } | cs |
3, 12, 25행의 적힌 것들에 대한 각각의 메소드들을 코딩해봤습니다.
첫번째 메소드를 해석해드리겠습니다. 출력을 하는 메소드로 반환값이 없으므로, void를 사용하고, 정수로 이루어진 배열을 전달받는다고 되어 있으므로, 입력받을 int[] items라는 정수로 이루어진 배열을 매개변수로 둡니다. 후에 안에 동작할 수행문을을 코딩 하는것이죠.
메소드 부분쯤 까지 오니 정말 점점 복잡해지고, 재밌어 지는 것 같습니다.
클래스 쯤부터 뒤로 갈수록 코드위주의 설명이 이루어 지고 있어서 가능한한 주석으로 설명을 많이 달고 있으니, 소스들을 자세히
봐주시는게 도움이 되겠습니다.
'Programming > JAVA' 카테고리의 다른 글
JAVA Web#10 Day 10 this키워드 & 접근제한자 & 메소드 응용 ( getter, setter) (0) | 2019.03.05 |
---|---|
JAVA Web#9 Day 9 메소드 오버로딩 & 생성자 (0) | 2019.03.04 |
JAVA Web#7 Day 7 자바의 클래스 (0) | 2019.03.03 |
JAVA Web#6 Day 6 자바의 배열 (0) | 2019.02.26 |
JAVA Web#5 Day 5 반복문 (0) | 2019.02.25 |
- Total
- Today
- Yesterday
- 블록엘리먼트
- 자바 독학
- 인라인엘리먼트
- copotter
- sql
- h#
- jhta
- 프레임워크
- 자바
- 자바 국비
- 브라캣
- 태그
- Oracle
- 비등가조인
- Database
- 중앙HTA
- 데이터베이스
- 오라클 문법
- spring
- html
- inline element
- Class
- 강제형변환
- 이클립스
- 자바 기초
- 국비
- 스프링
- API
- block element
- querybox
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |