메소드(Method)
- 클래스에 작성된 함수 - 멤버함수
- 필드(멤버변수)를 사용하여 원하는 기능을 구현하기 위한 명령의 모임
- Java 명령은 메소드에서만 작성 가능
메소드 작성 방법
반환형 메소드명(자료형 변수명, 자료형 변수명, ...){
명령;
명령;
}
- 메소드를 호출(Invoke)해야만 메소드에 작성된 명령 실행 - 기능 구현
- 메소드 () 기호 안에 작성된 변수를 매개변수(Parameter - Argument)라고 하며 [,] 기호를 사용하여 나열 작성 가능
- 메소드에 작성된 명령을 실행하기 위해 필요한 값을 메소드 호출시 전달받아 저장하기 위한 변수
- 전달값이 필요없는 경우 매개변수 작성 생략 가능
반환형(ReturnType)
- 메소드를 호출하여 얻을 수 있는 결과값에 대한 자료형
무반환형(void)
- 메소드를 호출하여 얻을 수 있는 결과값이 없는 경우 사용하는 자료형
- 메소드명은 식별자로 카멜 표기법을 사용하여 작성하는 것을 권장
- 카멜 표기법: 첫 문자는 소문자로 표기하고 그 이후에 연결되는 문자들의 첫자는 대문자로 표기
- ex) camelCase, androidStudio
메소드 호출(Invoke)
- 메소드에 작성된 명령을 실행하여 필요한 기능 구현
- 형식) 객체.메소드명(값, 값, ...)
- 참조변수에 저장된 메모리 주소로 객체를 참조하여 클래스에 작성된 메소드 호출
- 메소드 호출시 매개변수에 차례대로 값을 전달하여 저장해야만 메소드 호출 가능
- 매개변수에 정상적으로 값이 전달되지 않은 경우 메소드 호출 불가능 - 에러 발생
return
- 메소드를 강제로 종료하여 프로그램의 흐름(스레드)를 메소드를 호출한 위치로 되돌리는 키워드 - 제어문
- 일반적으로 if 구문과 같이 사용
- 형식) if(조건식) return; >> 메소드의 반환형을 [void]로 작성
- return 키워드를 사용하여 메소드의 처리 결과값을 메소드를 호출한 명령으로 반환하는 기능 제공
- 형식) return 반환값;
- 메소드의 반환형을 반환값과 동일한 자료형으로 작성
메소드는 객체 생성을 목적으로 작성된 클래스에 작성
package oop;
public class Method {
void displayOne() {
System.out.println("Method 클래스에 작성된 displayOne() 메소드 호출");
}
void displayTwo() {
System.out.println("Method 클래스에 작성된 displayTwo() 메소드 호출");
}
void printOne() {
int tot=0;
for(int i=1;i<=100;i++) {
tot+=i;
}
System.out.println("1~100 범위의 정수들의 합계 = "+tot);
}
void printTwo(int num) {
if(num < 0) {
System.out.println("[에러]매개변수에는 0 보다 큰 값이 전달되어 저장돼야 합니다.");
return;
}
int tot=0;
for(int i=1;i<=num;i++) {
tot+=i;
}
System.out.println("1~"+num+" 범위의 정수들의 합계 = "+tot);
}
void printThree(int num1, int num2) {
if(num1 > num2) {
int temp=num1;
num1=num2;
num2=temp;
}
int tot=0;
for(int i=num1;i<=num2;i++) {
tot+=i;
}
System.out.println(num1+"~"+num2+" 범위의 정수들의 합계 = "+tot);
}
int returnTot(int num1, int num2) {
if(num1 > num2) {
int temp=num1;
num1=num2;
num2=temp;
}
int tot=0;
for(int i=num1;i<=num2;i++) {
tot+=i;
}
return tot;
}
boolean isOddEven(int num) {
if(num % 2 != 0) {
return false;
} else {
return true;
}
}
int[] returnArray() {
return new int[]{10, 20, 30, 40, 50};
}
int sumOne(int[] array) {
int sum=0;
for(int su : array) {
sum+=su;
}
return sum;
}
int sumTwo(int... num) {
int sum=0;
for(int su : num) {
sum+=su;
}
return sum;
}
}
프로그램 실행을 목적으로 작성된 클래스 - main() 메소드 작성
package oop;
import java.util.Arrays;
public class MethodApp {
public static void main(String[] args) {
Method method=new Method();
System.out.println("method = "+method);
System.out.println("==============================================================");
method.displayOne();
method.displayTwo();
method.displayOne();
System.out.println("==============================================================");
method.printOne();
method.printOne();
System.out.println("==============================================================");
method.printTwo(50);
method.printTwo(80);
method.printTwo(-30);
System.out.println("==============================================================");
method.printThree(35, 79);
method.printThree(19, 88);
method.printThree(67, 12);
System.out.println("==============================================================");
int total=method.returnTot(30, 70);
System.out.println("합계 = "+total);
System.out.println("합계 = "+method.returnTot(20, 80));
System.out.println("==============================================================");
boolean result=method.isOddEven(10);
if(result) {
System.out.println("매개변수에 전달된 값은 [짝수]입니다.");
} else {
System.out.println("매개변수에 전달된 값은 [홀수]입니다.");
}
if(method.isOddEven(11)) {
System.out.println("매개변수에 전달된 값은 [짝수]입니다.");
} else {
System.out.println("매개변수에 전달된 값은 [홀수]입니다.");
}
System.out.println("==============================================================");
int[] numArray=method.returnArray();
System.out.println("배열 요소값 = "+Arrays.toString(numArray));
System.out.println("==============================================================");
System.out.println("합계 = "+method.sumOne(new int[]{10, 20, 30}));
System.out.println("==============================================================");
System.out.println("합계 = "+method.sumOne(new int[]{}));
System.out.println("합계 = "+method.sumOne(new int[]{10, 20}));
System.out.println("합계 = "+method.sumOne(new int[]{10, 20, 30, 40, 50}));
System.out.println("==============================================================");
System.out.println("합계 = "+method.sumTwo());
System.out.println("합계 = "+method.sumTwo(10, 20));
System.out.println("합계 = "+method.sumTwo(10, 20, 30));
System.out.println("합계 = "+method.sumTwo(10, 20, 30, 40, 50));
System.out.println("==============================================================");
}
}