1. 메서드란 ?
- 문장들을 묶어 놓은 것 → 작업 단위로 문장들을 묶어서 이름을 붙인 것이다.
- 값(입력)을 받아서 처리하고, 그 결과를 반환(출력)한다.
메서드의 장점
- 코드의 중복을 줄일 수 있다.
- 코드의 관리가 쉽다.
- 코드를 재사용 할 수 있다.
- 코드가 간결해서 이해하기 쉬워진다.
메서드의 작성 방법
- 반복적으로 수행되는 여러 문장을 메서드로 작성한다.
- 하나의 메서드는 한가지 기능만 수행하도록 작성한다.
💡 메서드 = 선언부 + 구현부로 이루어진다. 반환할 것이 없을 때에는 void 를 사용한다. ** 여기서 void란 반환할 게 없다는 뜻이다.
**지역변수 (lv) = 매서드 내에 선언된 변수이다. 지역변수는 이름이 겹쳐도 상관 없다.
int add(int x, int y){ //메서드 영역
int result = x+y;
return result;
}
int multiply(int x, int y){ //메서드 영역
int result = x * y;
return result;
}
지역변수 이름이 int x, int y로 구성이 되어 있지만, 겹치지 않으므로 상관 없다.
메서드 호출 방법
: 메서드 이름 (값1, 값2 … )
메서드의 실행 흐름
- 객체 생성(인스턴스 생성)
- 메서드 호출 - 메서드의 매개변수에 인수가 각각 대입됨
- 메서드의 모든 문장이 끝나거나, return을 만나면 반환됨
2. return문
: 현재 실행 중인 메서드를 종료하고 호출 한 곳으로 되돌아 갈 때 사용한다.
반환 타입이 void일 경우 생략 가능, 컴파일러가 자동 추가된다.
반환 타입이 void가 아닐 경우, 반드시 return문 필요하다.
return;
return a;
실습)
public class Return {
public static void main(String[] args) {
void printGugudan(int dan){
if (!(2<= dan && dan <= 9))
return; //dan의 값이 2~9가 아닌경우, 호출한 곳으로 그냥 되돌아간다.
for (int i = 1; i <= 9; i++) {
System.out.printf("%d * %d = %d%n", dan, i, dan*i);
}
return; // 반환타입이 void이므로 생략 가능, 컴파일러가 자동 추가해줌
}
}
}
실습2)
public class Ex6_4 {
public static void main(String[] args) {
MyMath mm = new MyMath();
long result = mm.max(5,3);
long result1 = mm.max(5,3);
long result2 = mm.subtract(5L, 3L);
long result3 = mm.multiply(5L, 3L);
double result4 = mm.divide(5L, 3L);
mm.printGugudan(6); //구구단 ()출력
System.out.println("구구단 출력");
System.out.println("max(5L, 3L) = " + result);
System.out.println("max(5L, 3L) = " + result1);
System.out.println("subtract(5L, 3L) = " + result2);
System.out.println("multiply(5L, 3L) = " + result3);
System.out.println("divide(5L, 3L) = " + result4);
}
}
class MyMath {
void printGugudan(int dan){
if (!(2 <= dan && dan <= 9)){
return; //입력받은 단(dan)이 2~9사이가 아니라면,메서드 종료하고 돌아가기
}
for (int i = 1; i <=9; i++) {
System.out.printf("%d * %d = %d%n", dan, i, dan *i);
}
return; //생략가능
}
long add(long a, long b) {
long result = a + b;
return result;
// return a + b; 위의 두줄을 이와 같이 한줄로 간단히 할 수 있다.
}
// 두 값을 받아서 둘중에 큰 값을 반환하는 메서드를 작성하시오.
long max(long a, long b){
if (a>b)
return a; //조건식이 참일때만 실행
else
return b;
}
long subtract(long a, long b) { return a - b; }
long multiply(long a, long b) { return a * b; }
double divide(double a, double b) {
return a / b;
}
}
반환값
: return문의 반환값으로 주로 변수가 오지만 항상 그런것은 아니다.
숫자값이나 문자, 문자열값이 올 수 도 있고, 계산식이나 논리식이 올 수 도 있다.
계산식이나 논리식이 올 경우 그 식을 반환하는 것이 아닌 계산된 결과를 반환한다.
반환값은 타입이 일치해야 값들이 반환 가능하다.
int result = x+y;
return result;
------------
return x+y; **위에 코드를 이렇게 한줄로 적을 수 있다. 같은 값 출력됨**
출처 : 자바의정석 - 기초편
'Java' 카테고리의 다른 글
[Java] 참조변수 super (0) | 2023.06.01 |
---|---|
[Java] 상속 (Inheritance) (0) | 2023.06.01 |
[Java] 생성자 this(), 참조변수 this (0) | 2023.05.31 |
[Java] 오버로딩, 오버라이딩 (0) | 2023.05.30 |
[Java] static 메서드와 인스턴스 메서드 (0) | 2023.05.30 |