method : 메서드 (=함수)
- 반복되는 코드 블록에 이름을 붙여 놓은 것 (코드 재사용)
- 객체가 가져가야 할 기능을 구현하기 위해 만듦
- 가독성 좋음
메서드 선언 방법
Type Name(매개변수) {
}
*type
: 돌려주는 값에 대한 타입 = return type
돌려줄 값이 없다면 void 적기
있다면 돌려주는 값의 타입 적기
*parameter, 매개변수 (입력변수)
: 전달받는 값에 대한 타입
없다면 () 괄호 안에 아무것도 안 적고 두기
*return (돌려줄 리터럴)
리턴이 없으면 void로 하기
반환 값(type)과 리턴 데이터 타입을 맞춰주기
예제)
1
public class MethodEx01 {
public static void main(String[] args) {
//main은 실행시키는 method
//메서드 안에 메서드 생성 불가!
//main 밖에, 클래스 안에 어디서든 선언 가능!
//calSum(); //메서드의 호출 - 이름()
//System.out.println(calSum()); //55
int result = calSum();
System.out.println(result);
int result2 = calSum();
System.out.println(result2); //재활용 가능
String result3 = ranStr();
System.out.println(result3);
String result4 = ranStr2();
System.out.println(result4);
}//메인 끝
//반환 O 매개 값 X 모형
static int calSum() { //왼쪽에 - 눌러서 메서드 접기 가능
//1~10까지의 합을 누적
int sum = 0;
for(int i = 1; i <= 10; i++) {
sum+=i;
}
return sum;
}
//반환 O 매개 값 X 모형 - 문자열의 결과 반환
static String ranStr() {
String str = ""; // A + B + C ... + Z
for(char c = 'A'; c<= 'Z'; c++) {
str += c;
}
return str; // String의 기본값 null
}
//반환 O 매개 값 X 모형 - return키워드의 활용
static String ranStr2() {
double d = Math.random(); //Math.random(); 얘도 함수임
if(d > 0.66) {
return "가위";
} else if (d > 0.33) {
return "바위";
} else {
return "보";
}
/*
String str;
if (d > 0.66) {
str = "가위";
} else if (d > 0.33){
str = "바위";
} else {
str = "보";
}
return str;
*/
}
}
2
public class MethodEx02 {
public static void main(String[] args) {
/*
* 매개변수 (parameter)
* 1.매개변수는 메서드를 호출할때 필요한 값을 전달하는 매개체
* 2.매개변수는 몇개 받을지 메서드를 선언할 때 결정 해줍니다.
*/
int result = calSum(10);
System.out.println("1~10까지의 합 : " + result);
int result2 = calSum(100);
System.out.println("1~100까지 합 : " + result2);
int result3 = calSum2(10,20);
System.out.println("10~20까지 합 : " + result3);
}
//반환 O, 매개변수 O
static int calSum(int end) {
int sum = 0;
for(int i = 1; i <= end; i++) {
sum += i;
}
return sum;
}
//반환 O, 매개변수 O - 매개변수가 여러개
static int calSum2(int start, int end) {
int sum = 0;
for (int i = start; i <= end; i++) {
sum+=i;
}
return sum;
}
}
3
public class MethodEx03 {
public static void main(String[] args) {
/*
* 반환유형(return type)
* 1.반환유형은 메서드가 돌려주는 값에 대한 타입.
* 2.반환유형이 있는 메서드는호춯 구문이값이 되기 때문에 메서드의 매개값으로 사용될 수 있다.
* ex)printLn(메서드 호출)
* 3.모든 메서드는 return을 만나면 강제종료됩니다.
* 4.리턴문 아래에는 코드를 작성할 수 없다.
*/
int result = add(3, 5);
System.out.println("결과 : " + result);
System.out.println( add(3,5) );
//소괄호가 붙어있으면 다 메서드다
int result2 = add(add(1,2), add(2,3));
System.out.println(result);
// int r = sub(1,2);
// System.out.println(sub(1,2));
sub(1,2);
noReturn("hello");
noReturn("bye");
}
//반환 O, 매개변수 O
static int add(int a, int b) {
// int result = a + b;
// return result; //매개변수의 합
return a + b;
}
//반환X, 매개변수O - 리턴이 없음(단순 실행)
static void sub(int a, int b) {
System.out.println("a-b="+(a-b));
}
//void형에서 return- 종료
static void noReturn(String s) {
if(s.equals("hello")) {
System.out.println("실행종료");
return; //종료
}
System.out.println(s);
}
}
4
import java.util.Arrays;
public class MethodEx04 {
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
String [] arr2 = {"월", "화", "수"};
method01(arr); //변수명 or 생성구문
method02(arr, arr2);
int [] arr3 = method03();
String [] arr4 = "str".split("");
// System.out.println(Arrays.toString(method03()));
}
//배열도 매개변수로 받을 수 ㅇㅇ
//정수배열을 매개변수로 받는 메서드
static void method01(int [] a) {
//배열 받을거면 타입 뒤에 대괄호
//a를 이용해서 배열값의 사용 가능
System.out.println(Arrays.toString(a));
}
//정수배열과, 문자열 배열을 매개변수로 받는 메서드
static int method02(int[] arr, String [] arr2) {
//향상된 포문
for(int a : arr) {
System.out.println(a);
}
return 0;
}
//배열을 반환하는 메서드
static int[] method03() {
int [] arr = new int[5];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;
return arr;
// return null;
}
}
5
public class MethodEx05 {
public static void main(String[] args) {
//메서드의 (동기적) 실행 - 순서대로 실행
test01();
//메서드의 재귀적 실행 - 나 자신을 다시 재귀하는 실행
//메서드를 계속 실행시켜야 할 때!!!!!
//복잡한 규칙성을 만드는데좋ㅇㅁ
recursive(0);
int sum = 1;
for(int i = 1; i <= 5; i++) {
sum *= i;
}
System.out.println(sum);
int result = fac(5);
System.out.println(result);
}
static void test01() {
System.out.println("1번 메서드 실행");
test02();
System.out.println("1번 메서드 종료");
}
static void test02() {
System.out.println("2번 메서드 실행");
System.out.println("2번 메서드 종료");
}
static void recursive(int a) {
//재귀적 함수는 탈출의 구문을 반드시 명시한다.
if(a == 10) return;
System.out.println(a);
a++;//1증가
recursive(a);
}
static int fac(int a) {
if(a == 1) return 1; //f(1) = 1
return a * fac(a-1);
}
}
2022.10.05.wed / course11
'Java' 카테고리의 다른 글
TIL | Java - Garbage Collecter : 가비지 컬렉터 (0) | 2022.10.06 |
---|---|
TIL | Java - Pakage : 패키지 (0) | 2022.10.06 |
TIL | Java - Class : 클래스 & Object : 객체 생성 (0) | 2022.10.05 |
TIL | Java - OOP : 객체지향 언어, Class : 클래스 & Object : 객체 (0) | 2022.10.05 |
TIL 12 | Java - 반복문 (중첩 For문, 향상된 For문) (0) | 2022.09.28 |