메서드
메서드란 특정한 작업을 수행하도록
독립적으로 작성된 프로그램을 뜻한다.
메서드 정의 부분이 필요할 때 마다 호출해서 사용할 수 있다.
메서드 정의 부분 처리가 끝나면 호출한 곳으로 돌아간다.
메서드 정의하는법
static void 메서드명( ){
}
이러한 형태를 갖는다.
정의를 한 뒤 호출 할 때는
메인 메서드 내부에
메서드명( ); 으로 불러올 수 있다.
항상 메인 메서드가 먼저 실행된다.
메서드명( )의 가로 안에 값을 넣으면
그 값을 들고 메서드로 와서 실행한다.
메서드에는 그 값을 받기위한
변수 설정이 필요하다. (매개변수 or parameter)
클래스를 배울때 배웠던
멤버변수, instance 변수나
static변수,클래스변수와 같다.
add(100,200); //호출 100,200:(전달)인자 or argument
static void add(int x,int y) { //add 메서드 정의
static void sub(int x,int y,int z) {
같은 변수명을 사용해도 서로 다른 메서드기 때문에
사용해도 중복되지 않는다.
리턴 타입이란
만약 메서드에서는 어떠한 값을 가지고
메인메서드로 돌아가야할 경우 static void가 아닌
static 데이터타입 으로 정의한다.
static void는 리턴할 값이 없을때 사용한다.
static int sub(int x,int y,int z) {
int result = x-y-z;
return result; // result 값을 가지고 돌아가라.
}
int a =sub(100,11,22); //리턴 값을 받을 변수가 필요하다.
만약 메인 클래스 내부에 static이 붙지 않은 메서드를 만들었을 때
그 메서드를 호출하기 위해선
Ex05_04_메서드 e = new Ex05_04_메서드();
int result2 = e.sub2(100,11,22);
System.out.println("result:" + result);
메인 클래스를 새로이 정의 해주어야한다.
static 메서드에서는 static 메서드만 호출할 수 있다.
static 메서드가 포함된 클래스의 객체를 만들어
메서드에 접근하면 static 붙지 않은 메서드도 호출 할 수 있다.
메서드에서 리턴을 하게되면
호출했던 그 위치로 돌아가 진행을 하게된다.
그래서 메서드 안에서 다른 메서드를 호출 할 수 있다.
자바에서의 메서드의 리턴은 한번에 하나의 결과값만 넣을 수 있다.
메서드 안에서 배열의 특정 값을 바꾼후
메인에서 다시 배열의 값을 확인할 시
바뀐 값으로 출력된다.
예시
void sub3(int[] x) {//int[] x ={1,2,3} = main의 arr
System.out.println("sub3 메서드");
for(int t:x) {
System.out.print(t+" ");
}// 1 2 3
System.out.println();
x[1] = 100; //배열의 값을 바꿈.
for(int i=0;i<x.length;i++) {
System.out.print(x[i]+" ");
} 1 100 3
System.out.println();
}
메인
ex.sub3(arr);
System.out.println("------");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");// 1 100 3이 된다.
}
클래스 설정시 초기화를 한 변수에 설정이 없다면
int = 0, boolean = false로 설정된다.
메소드 내에 지역변수는 자동으로 초기화해주지 않는다.
static변수는 객체를 만들때 가져다 쓰게되고
instance변수는 객체를 만들때마다 새로 선언하고
지역 변수는 메소드의 명령어가 끝날때마다 초기화된다.
클래스 변수로 이사를 다닌다고 쳤을때
static변수는 집안의 가보
instance 변수는 이사갈때마다 바꿔주는 가구
지역 변수는 일회용품 같은거라고
비유하면 이해가 조금 쉽다.
재귀호출이란
메서드 안에서 해당 메서드를 호출할때를 이르는 말이다.
메인
show(3);
메서드
static void show(int cnt) {
System.out.println("Hi~"+cnt);
if(cnt==1)
return;
show(--cnt); //재귀호출
}
위의 return은 메서드로의 리턴이 아닌 호출된 곳으로 리턴을 뜻한다.
재귀호출로 팩토리얼 구하기
static int factorial(int n) {
if(n==1)
return 1;
else
return n*factorial(n-1);
}
'Develop > JAVA' 카테고리의 다른 글
0525 JAVA 일곱번째 (0) | 2022.06.01 |
---|---|
0524 JAVA 여섯번째 (0) | 2022.06.01 |
0520 JAVA 네번째 공부! (0) | 2022.06.01 |
0519 JAVA 세번째 공부 정리 (0) | 2022.06.01 |
0518 JAVA 두번째 (0) | 2022.05.27 |