메인 메서드에 Sort(); 메서드가 있는데 Sort(); 메서드가 괄호안에 아무것도 없다면
메서드로 넘어가는 값 없이 호출 당한 해당 메서드안에 작성된 로직만 실행 되는것이다.
무슨말이냐면, Sort(); 했다고 해서 () 괄호안에 전체값이 들어가는게 아니라
아무값도 들어가지 않고 그냥 해당 메서드를 실행시키는 것이다.
(해당 메서드안에 있는 로직으로만 작동 하는 것이다.)**
c.play(); => void play() { }
play(currentPos); => void play(int currentPos) { }
메서드로 들어갔는데 또 다른 메서드가 있다면 또 다시 타고 들어가는 것이다.
그렇게 마지막까지 들어가서 코드들을 모두 수행 한후에 다시 호출했던 메서드로 돌아와
밑으로 내려가 나머지 코드를 실행시키는 것이다.
그리고 메서드 안에 void 가 아니고 int형 String형등 같은거면 return 문이 있다.
즉, 값을 가지고 돌아간다는 말이다.
return문만 타입이 있는 이유는 return 할때 타입을 정해줘야 하기 때문이다.
그래서 둘이 세트인것이다.
해당 메서드를 호출하여 그 메서드에 있는 것들을 그냥 실행, 동작 시키고
아무 return값 없이 그냥 돌아올때 void를 사용하는 것이다.
즉, 반환값이 없는 경우 반환타입을 void로 적는 것이다.
그리고 Sort(); 만 있는 메서드는 이렇게 void Sort() { System.out.println("hi"); } 매개변수 자리가
아무것도 없는곳을 찾아가 실행 하는것이고, 만약 메인메서드에서 Sort(1); 인 메서드 실행이 있다면
void Sort(int num) { System.out.println("hi"); } 있는 곳으로 들어가는 것이다.
혹시라도 맞지 않는곳이 있다면 실행 되지 않는다.
메서드는 크게 두 부분, ‘선언부’(머리)와 ‘구현부(몸통)’로 이루어져 있다.
메서드를 정의한다는 것은 선언부와 구현부를 작성하는 것을 뜻한다.
반환타입 메서드이름 (타입 변수명, 타입 변수명 ... ) { // - 선언부
// 메서드 호출시 수행될 코드 - 구현부
}
---------------------------------------------------------
int add (int a, int b ... ) { // - 선언부
int result = a + b; // - 구현부
return result; // 호출한 메서드로 결과를 반환한다. - 구현부
}
메서드의 작업수행 결과(출력)인 ‘반환값’의 타입을 적는다.
반환값이 없는 경우 반환타입으로 ‘void’ 를 적어야 한다.
메서드의 반환타입이 ‘void’ 가 아닌 경우, 구현부 { } 안에 ‘ return 반환값; ’ 이
반드시 포함 되어 있어야 한다.
메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면
같은 이름의 변수를 선언해도 된다. 이처럼 메서드 내에 선언된 변수를 ‘지역변수’ 라고 한다.
int add(int x, int y) {
int result = x + y;
return result;
}
int multiply(int x, int y) {
int result = x * y;
return result;
}
메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 된다. 이처럼 메서드 내에 선언된 변수를 ‘지역변수’ 라고 한다.
선언된 변수 x, y, result 는 이름만 같을 뿐 서로 다른 변수이다.
Reference
남궁 성 지음, 『자바의 정석』, 도우출판.