본문 바로가기

Dev. Java

[자바 기본기] 2. 변수와 메서드(2)

지난 포스팅에 이어 메서드 관련 내용을 정리한다.


2.3 메서드

  • 정의

  메서드는 어떤 작업을 수행하기 위한 명령문의 집합이다. 주로 어떤 값을 입력받아

서 처리하고 그 결과를 돌려준다. 경우에 따라서는 입력받는 값이 없을 수도 있고

(void), 결과를 반환하지 않을 수도 있다.


  • 장점
  반복적인 코드를 줄이고 코드를 한 곳에서만 관리하면 되므로 유지보수가 편리

  • 작성지침
  - 하나의 메서드는 한 가지 기능만 수행하도록 작성하는 것이 좋다.

  - 반복적으로 수행되어야 하는 여러 문장을 하나의 메서드로 정의해 놓으면 좋다.

  - 관련된 여려 문장을 하나의 메서드로 만들어 놓는 것이 좋다.


  •  작성방법  

 메서드는 위의 그림과 같이 선언분와 구현부로 나눌 수 있다. 선언부에는 리턴타

입, 메서드 이름, 그리고 괄호()안에 매개변수를 선언하고, 구현부에는 메서드가 호

출되었을 때 수행되어야 할 코드를 넣어주면 된다. 또한 리턴타입은 메서드의 수행

결과를 어떤 타입(자료형)으로 반환할 것인지를 알려준다.


  • 호출(사용)방법
메서드를 호출하기 위해서는 다음과 같이 한다.

참조변수.메서드 이름();               // 매개변수가 없는 경우
참조변수.메서드 이름(값1, 값2);     // 매개변수가 있는 경우


2.4 JVM 메모리 구조

응용 프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 

할당받고 JVM은 이 메모리를 용도에 따라 다음과 같이 나누어 관리한다.


1. 메서드 영역

  프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일을 읽어서 

분석하여 클래스에 대한 정보를 이곳에 저장한다. 

2. 힙

  인스턴스 변수가 생성되는 공간, 프로그램 실행 중 인스턴스 변수는 모두 이 곳에 

생성된다.

3. 호출스택

  메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 

메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간결과 등을 저장하

는데 사용된다. 

- 메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.

- 메서드가 수행을 마치고 나면 사용했던 메모리를 반환하고 스택에서 제거된다.

- 호출스택의 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.

- 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드이다.


cf. 클래스 메서드와 인스턴스 메서드

- 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야 하는 것에 static

을 붙인다.

- 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.

- 클래스 메서드는 인스턴스 변수를 사용할 수 없다.

  - 클래스 메서드가 인스턴스를 가지고 있는지 확신할 수 없기 때문이다.

- 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.

  - 메서드 호출시간이 짧아지기 때문에 효율이 높아진다.