메서드의 호출
메서드 호출하는 방법
- 메서드이름 (값1, 값2, ... ); // 괄호 안에는 '작업에 필요한 값들' 적어주면 됨
메서드 호출 예
- print99danAll() // void print99danAll() 을 호출 (별다른 입력값 없이 호출 가능)
- int result = add(3,5); // int add(int x, int y)를 호출하고, 결과를 result에 저장
예제)
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
long result1 = mm.add(5L, 3L);
long result2 = mm.subtract(5L, 3L);
long result3 = mm.multiply(5L, 3L);
double result4 = mm.divide(5L, 3L);
System.out.println("add(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 {
long add(long a, long b) {
long result = a + b;
return result;
// return a + 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;
}
}
코드 해석
1. MyMath 클래스 작성 ( 메서드 작성)
2. MyMath 객체 생성
3. MyMath 객체 사용 (객체의 메서드 호출)
4. MyMath 클래스에서 작업을 마치면 메서드를 호출한 곳으로 값이 들어온다.
예제) 위의 코드를 활용해 "두 값을 받아 둘 중 큰 값을 반환하는 메서드" 작성해보기
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
long result5 = mm.big(5L, 6L);
System.out.println("더 큰 값은(5L, 6L) =" +result5);
}
}
class MyMath {
long big(long a, long b) {
long result = 0;
if(a>b) {
result = a;
}else {
result = b;
}
return result;
}
}
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
long result5 = mm.big(5L, 6L);
System.out.println("더 큰 값은(5L, 6L) =" +result5);
}
}
class MyMath {
long big(long a, long b) {
long result = 0;
result = a > b ? a : b; // 삼항 연산자 사용
return result;
// 위 두 문장을 합치면 return a > b ? a : b;
}
}
>> 삼항 연산자 사용한 코드
메서드의 실행 흐름
1. main 메서드에서 메서드 add를 호출한다.
인수 1L과 2L이 메서드 add의 매개변수 a, b에 각각 복사 (대입)된다.
2. 메서드 add의 괄호{} 안에 있는 문장들이 순서대로 수행된다.
3. 메서드 add의 모든 문장이 실해애되거나 return문을 만나면, 호출한 메서드(main메서드)로
되돌아와서 이후의 문장들을 실행한다.
'자바의 정석 - 기초편' 카테고리의 다른 글
호출 스택 (call stack) - 중요! (0) | 2022.08.05 |
---|---|
Return 문, 반환값 (0) | 2022.08.05 |
메서드란? / 메서드의 선언부와 구현부 (0) | 2022.08.04 |
선언 위치에 따른 변수의 종류 / 클래스 변수와 인스턴스 변수 (0) | 2022.08.04 |
클래스의 정의 (0) | 2022.08.04 |