코딩항해기

[JAVA] 메소드 / 메서드 본문

JAVA

[JAVA] 메소드 / 메서드

miniBcake 2024. 7. 3. 15:42



함수

클래스에 속하지 않고 독립적으로 존재하는 코드 블록이다.

 

메소드

클래스 안에 선언되어있고, 단독적으로 사용 가능한 기능을 가진 코드 블록이다.

어떠한 기능 코드들의 묶음 이름 뒤에 소괄호가 온다. 단, 키워드(if, while 등) 뒤에 오는 소괄호 형식은 메소드가 아니다.

자바에서는 모든 메소드를 클래스 내에서 선언해야하기 때문에 따로 함수가 없다.


메소드 선언과 구현(정의)

리턴타입 메소드명 (자료형 매개변수) { //선언부 == 메서드 시그니쳐
     //구현부 
     실행할 문장; 
     return 리턴값; //리턴타입이 없다면(void) 생략함
 }

 

메서드 시그니쳐

리턴타입 메소드명 (자료형 매개변수) 부분을 메서드 시그니쳐라고 한다. 선언부라고도 한다.

리턴타입 반환할 값이 있다면 반환값의 자료형을 작성하고, 없다면 void로 작성한다. 이 경우 return을 생략한다.

메소드 3요소 : output, 기능, input


메소드의 정의 순서

1. 메소드에 구현할 기능을 생각한다.

2. 반환타입(Output 타입)이 생각나지 않는다면 우선 void(반환값 없음)로 작성한다.

3. 기능에 맞는 메소드명을 작성한다. (가능하다면 동사로 작성하는 것이 좋다. ex) add, sum, ...)

4. 매개변수와 매개변수 타입을 생각한다.

5. 실행할 코드를 작성한다.

6. 리턴값이 있다면 타입맞춰 반환하고, 아니라면 생략한다. 

   (메소드는 return을 만나면 즉시 종료된다.)

 

 

+) 매개변수, 리턴값에 따른 메소드 호출 방식

매개변수 유무 리턴값 유무 메소드 호출방식
매개변수 X 리턴값 X 객체명.메소드명();
매개변수 O 객체명.메소드명(인수);
매개변수 X 리턴값 O 출력문(객체명.메소드명());
리턴타입 변수 = 객체명.메소드명();
매개변수 O 출력문(객체명.메소드명(인수));
리턴타입 변수 = 객체명.메소드명(인수);
 


메소드를 사용하는 이유 

  • 중복된 코드 제거 
  • 높은 재사용성 
  • 유지보수에 용이함  (*모듈화)

 

주의점 (지역변수)

 

메소드와 메모리 메소드는 실행되면 메모리의 stack 영역에 메소드 실행에 필요한 저장공간이 생성된다.

그곳에 메소드 내부에서 선언한 변수(지역변수, 매개변수)들의 저장공간이 생성된다 

메소드의 코드가 모두 실행되어 종료되면 stack 영역에서 해당 메소드의 저장공간이 삭제된다. (메모리 해제) 

그러고나면 지역변수의 저장공간이 사라지므로, 소속된 메소드 바깥에서 지역변수 사용이 불가능하다.

 

(static 메소드는 프로그램 시작과 동시에 메모리에 할당되어 종료 후에 메모리가 해제되기 때문에 지역변수를 사용할 수 없다. 지역변수는 코드가 실행 될 때만 할당되고 메모리가 해제되기 때문)