> method 메소드 (함수)
<반환 유형> <메소드 이름>(매개변수) { ... }
반복되는 코드 블록에 이름을 붙인 것 - 반복되는 코드를 줄이고 구조화시켜 가독성을 좋게 함
객체지향프로그램에서 메서드를 '객체가 가져야 할 기능을 구현하기 위해 만든다'고 표현함
method는 다른 method 안에 만들 수 없음 (class 안에/ main 밖에 위치)
* return type 반환 유형
메소드를 실행하여 호출한 곳에 반환하는 값의 datatype
반환값이 없는 경우 반환 유형에 void 써줌 (ex. void calSum())
메소드를 호출 시 해당 반환 유형에 맞는 변수에 반환값을 저장해야 함 (ex. int a = calSum(1, 2) ← calSum의 반환 유형이 int인 경우)
* return
1)반환값이 있는 메소드에서 뒤에 연산식과 함께 사용 시 → 값의 반환 & 메소드 종료
! 반환값이 있는 메소드에서는 값의 반환이 필수
ex. return 0;
ex. return sum;
2)void형 메소드(반환값이 없는 메소드)에서 단독 사용 → 메소드 종료
ex. return;
static char randomSt() {
char c = 0;
double d = Math.random(); //0이상 1미만의 임의의 실수 받음
if(d > 0.66) {
c = 'A'; //d가 0.66보다 크면 c는 A
} else if(d > 0.33) {
c = 'B'; //d가 0.33보다 크고 0.66보다 작으면 c는 B
} else {
c = 'C'; //d가 0.33이하라면 c는 C
}
return c;
}
//혹은
static char randomSt() {
double d = Math.random();
if(d > 0.66) {
return 'A'; //이렇게 조건에 따라 나누어 바로 반환
} else if(d > 0.33) {
return 'B';
} else {
return 'C';
}
}
* parameter 매개변수
메소드 실행에 필요한 데이터를 외부에서 받아오기 위해 사용
소괄호( ) 안에 datatype과 함께 선언, 초기화X, 여러개 가능
만약 메소드가 외부에서 받아올 데이터가 없다면 선언하지 않음 - 소괄호는 반드시 써주되 안은 비워둠
ex. int calSum(int start, int end, String s) { ... }
ex. int calSum() { ... }
*배열의 경우
매개변수로 배열을 받는 경우, 소괄호( ) 안에 datatype과 함께 배열 선언 (ex. void method(int[] arr))
배열을 반환하는 경우, 반환유형에 배열datatype[] 쓰기 (ex. int[] method())
//받은 배열을 문자열 형태로 출력하는 메소드
static void method01(int[] a) { //매개변수 배열 - 소괄호 안에 배열 선언
System.out.println(Arrays.toString(a));
}
//main
public static void main(String[] arg) {
int[] arr = {1, 2, 3, 4, 5};
method01(arr); //배열을 매개변수로 하는 메소드 사용 - 소괄호 안에 전달하려는 배열이름 입력
}
//[1, 2, 3, 4, 5]
//배열을 반환하는 메소드
static String[] method02() {
String[] week = {"월", "화", "수"};
return week; //String형 배열 반환
}
//main
public static void main(String[] args) {
String[] arr = method02(); //배열 arr에 메소드가 반환한 배열을 저장
}
//매개변수로 배열을 받고 이를 이용해 새로운 배열을 만들어 반환
static int[] method03(int[] arr) {
int[] iArr = new int[arr.length * 2]; //크기는 두 배
for(int i = 0; i < arr.length; i++) {
iArr[i] = arr[i]; //받은 배열은 그대로 복사
}
return iArr;
}
//main
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int[] iArr = mathod03(arr); //메소드에서 반환된 배열을 iArr에 저장
System.out.println(Arrays.toString(iArr));
}
//[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
//첫 째 메소드 print - 매개변수 없음 반환값 없음
ststic void print() {
System.out.println("정수 두개를 입력하세요"); //출력
}
//두 째 메소드 input - 매개변수 없음 반환값 있음
ststic int input() {
Scanner scan = new Scanner(System.in);
System.out.print("정수입력>");
int num = scan.nextInt();
return num; //정수 입력받아 반환해줌
}
//세 째 메소드 - 매개변수 있음 반환값 있음
static int add(int num1, int num2) {
int result = num1 + num2;
return result; //두 정수 받아서 더한 뒤 반환
}
//네 째 메소드 showResult - 매개변수 있음 반환값 없음
static void showResult(int result) {
System.out.println("덧셈 결과: " + result); //정수 받아서 출력
}
//main
public static void main(String[] args) {
print();
int num1 = input();
int num2 = input();
int result = add(num1, num2);
showResult(result);
}
//첫 번째 메소드 calSum
static int calSum(int end) {
int sum = 0;
for(int i = 1; i <= end; i++) {
sum += i;
}
return sum;
}
//두 번째 메소드 calSum2
static int calSum2(int start, int end) {
int sum = 0;
for(int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
//main
public static void main(String[] args) {
System.out.println("1부터 100까지의 합: " + calSum(100));
System.out.println("10부터 20까지의 합: " + calSum2(10, 20));
}
// 1부터 100까지의 합: 5050
// 10부터 20까지의 합: 165
//다음과 같이 메소드를 매개변수로 사용할 수도 있음
public static void main(String[] args) {
int result = calSum2( calSum(5), calSum(10) ); //result는 15부터 55까지의 합
}
*Math.abs() : 절댓값(absolute value)을 반환하는 메소드
'course 2021 > JAVA' 카테고리의 다른 글
day09 - package (0) | 2021.08.30 |
---|---|
day08 - class (0) | 2021.08.29 |
day06 - array insert, update, delete (0) | 2021.08.24 |
day05 - control statement (2) | 2021.08.18 |
day04 - array, scanner (1) | 2021.08.18 |