Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- @Aspect
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch9
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch12
- 타임리프 - 기본기능
- 스프링 입문(무료)
- jpa 활용2 - api 개발 고급
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch1
- 스프링 mvc1 - 스프링 mvc
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch8
- 스프링 mvc1 - 서블릿
- 스프링 mvc2 - 타임리프
- jpa - 객체지향 쿼리 언어
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch4
- 2024 정보처리기사 수제비 실기
- 스프링 db2 - 데이터 접근 기술
- 2024 정보처리기사 시나공 필기
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch2
- 게시글 목록 api
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch6 - 14 ~ 19[메서드란? 메서드의 선언부와 구현부, 메서드호출,메서드의 실행 흐름] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch6 - 14 ~ 19[메서드란? 메서드의 선언부와 구현부, 메서드호출,메서드의 실행 흐름]
소소한나구리 2023. 11. 15. 16:591) 메서드 (함수와 의미가 거의 비슷함)
- 문장들을 묶어놓은 것, 작업단위로 문장들을 묶어서 이름 붙인 것
- 메서드는 객체지향 개념에서 함수와 비슷한 기능을하는데 메서드는 꼭 클래스 안에 있어야 하지만 함수는 클래스에 독립적임(제약이 없음)
- 선언부 + 구현부로 구성됨
(1) 선언부
- 반환타입 메서드이름 (타입 변수명, 타입 변수명, ...) - 선언부
- 반환타입 : 작업결과 타입
- 메서드이름
- ( ) : 매개변수목록 입력(작업에 필요한 값) (0 ~ n개 까지 가능)
- 반환할 값이 없을 시 반환 타입을 void로 작성
(2) 구현부
- { - 구현부
// 메서드 호출 시 수행될 코드, 즉 작업을 수행하는 코드를 작성
}- 작업 결과는 반환 타입이 void일때는 0개 특정 타입인 경우 1개를 반환할 수 있지만 작업 결과가 여러개일 경우 반환 타입을 배열이나 객체로 설정하여 여러개를 반환할 수 있음
int add (int a, int b) // 선언부
{ // 구현부 시작
int result = a + b;
return result;
} // 구현부 끝
(3) 메서드의 장점
- 코드의 중복을 줄일 수 있음 -> 프로그래밍에서는 필수
- 코드의 관리가 쉬움
- 코드를 재사용 할 수 있음
- 코드가 간결해서 이해하기 쉬움
(4) 메서드 작성
- 반복적으로 수행되는 여러 문장을 메서드로 작성
- 반복되지 않더라도 여러 문장으로 구성된 하나의 작업을 메서드로 작성
- 하나의 메서드는 한 가지의 기능만 수행 하도록 작성하는 것을 권장함 - 코드의 유지보수성이 더욱 높아지고 메서드의 재사용성도 훨씬 높아짐
- 배열 초기화, 배열 출력의 2가지의 기능을 한가지의 메서드로 묶는 것보다 배열 초기화 메서드, 배열출력 메서드 2가지의 메서드를 작성
(5) 지역변수(lv)
- 메서드 영역 내에 선언된 변수(매개변수도 지역변수)
- 각 메서드가 종료 될때까지만 유효함.
- 각 메서드 영역이 겹치지 않으면 매개변수의 이름이 같아도 상관 없음
2) 메서드의 호출
- 메서드이름(값1, 값2, ... );
- 메서드 정의 시 작업에 필요한 값이 없으면 argument 없이 메서드 호출이 가능하며 메서드 작성 시 parameter를 작성했다면 메서드 호출시 꼭 작성한 parameter의 개수만큼 argument를 입력하여 메서드를 호출해야 함
(1) 반환타입이 없는 경우
- print99danAll();
- void print99danAll()을 호출
- 반환 타입이 void이므로 메서드 실행 결과를 반환할 수 없음
- 메서드가 동작하고 그 결과를 반환할 필요가 없을 때 사용
(2) 반환타입이 있는 경우
- int result = add(3, 5);
- 작업결과를 저장할 변수가 필요하며 변수에 결과를 담지 않았다고 에러가 나진 않지만 메서드의 결과를 사용할 수가 없음
- int add(int x, int y)를 호출하고, 결과를 result에 저장
- 인수(argument; 원본)로 3과 5를 입력하여 메서드를 호출
- 메서드 수행 후 결과값을 result에 저장, 메서드의 반환타입이 int이므로 반환결과를 담은 result 변수도 int타입이여야 함
int add(int x, int y) // 인수를 매개변수(parameter,복사본)에 대입
{
int result = x + y; // 대입한 수를 계산하여 result에 저장
return result; // result의 결과를 add에 반환
}
(3) 예제
- 사칙연산을 하는 메서드가 담긴 MyMath클래스를 작성
- main 메서드에서 MyMath객체를 생성하고 인스턴스 메서드를 사용
- 모든 메서드 정의 시 파라미터를 작성하였으므로 메서드를 호출할 경우 꼭 인자를 입력해야함
- 각 메서드를 호출하여 얻은 연산 결과를 각 메서드의 반환타입과 동일한 변수를 선언하여 결과를 담음
class ex6_4 {
public static void main(String args[]) {
// 2. 객체 생성
MyMath mm = new MyMath();
// 3. MyMath객체 사용
long result1 = mm.add(5L, 3L); // add 매서드 호출
long result2 = mm.subtract(5L, 3L); // subtract 매서드 호출
long result3 = mm.multiply(5L, 3L); // multiply 매서드 호출
double result4 = mm.divide(5L, 3L); // divide 매서드 호출
long Max = mm.Max(5 , 3); // Max 메서드 호출
long Min = mm.Min(5 , 3); // Min 메서드 호출
System.out.println("add(5, 3) = "+result1);
System.out.println("subtract(5, 3) = "+result2);
System.out.println("multiply(5, 3) = "+result3);
System.out.println("divide(5, 3) = "+result4);
System.out.println("Max(5, 3) = "+Max);
System.out.println("Min(5, 3) = "+Min);
}
}
// 1. 사칙연산 클래스 MyMath클래스 작성(매서드 작성)
class MyMath {
long add(long a, long b) { // add 메서드
long result = a + b;
return result;
// return a + b; // 위의 두 줄을 한 줄로 간단히
}
long subtract(long a, long b) {return a - b;} // subtract 메서드
long multiply(long a, long b) {return a * b;} // multiply 메서드
double divide(double a, double b) { // divide 메서드
return a / b;
}
// 추가 - 두 값을 받아서 둘 중에 큰 값을 반환하는 메서드를 작성
long Max(long a, long b) {
// long result = 0;
// if(a>b) {
// result = a;
// } else {
// result = b;
// }
// return result;
return a > b ? a : b ; // 3항 연산자로 간단히 변경
}
// 추가 - 둘 값중 작은 값을 반환하는 메서드 작성
long Min(long a, long b) {
return a < b ? a : b;
}
}
출력값
add(5, 3) = 8
subtract(5, 3) = 2
multiply(5, 3) = 15
divide(5, 3) = 1.6666666666666667
Max(5, 3) = 5
Min(5, 3) = 3
(4) 메서드의 실행 흐름
- 객체(인스턴스 생성)
- 메서드 호출
- 메서드를 수행하기 위해 인수를 매개변수에 대입
- 대입한 값으로 계산 후 result에 저장
- 결과값 반환
- 메서드를 수행 한 결과 값을 변수에 저장
MyMath mm = new MyMath[]; // 1. 인스턴스 생성
long value = mm.add(1L, 2L); //2. 메서드를 호출, // 6. result의 값을 value에 저장
long add(long a, long b) { // 3. 매개변수에 대입
long result = a + b; // 4. 대입한 값으로 계산 후 result에 저장
return result; // 5. 결과값을 반환
}
** 출처 : 남궁성의 정석코딩_자바의정석
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch6 - 23 ~ 25[기본형매개변수, 참조형매개변수, 참조형 반환타입] (0) | 2023.11.16 |
---|---|
자바의 정석 기초편 ch6 - 20 ~ 22[return문, 반환값,호출스택] (0) | 2023.11.16 |
자바의 정석 기초편 ch6 - 9 ~ 13[클래스의 정의,선언위치변수종류,클래스변수,인스턴스변수] (0) | 2023.11.15 |
자바의 정석 기초편 ch6 - 5 ~ 8[한파일에 여러 클래스 작성하기,객체의 생성과 사용, 객체의 배열] (1) | 2023.11.14 |
자바의 정석 기초편 ch6 - 1 ~ 4[객체지향언어,클래스와 객체] (0) | 2023.11.14 |