함수란?

  • 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합입니다.
  • 함수로 구현된 기능은 여러 곳에서 호출되어 사용이 가능합니다.

메서드란?

  • 객체의 기능을 구현하기 위한 클래스 내부에 구현되는 함수입니다.
  • 멤버 함수라고도 합니다.
  • 메서드를 구현하면 객체의 기능을 구현하는 것입니다.

함수와 메서드의 차이점

프로그래밍 언어마다 함수로 부르는 언어도 있고 메서드라고 부르는 언어도 있습니다.
그런데 함수와 메서드는 비슷하면서도 다른 점이 있습니다.
함수는 어디에 속해있지 않고 단독 모듈이라 함수를 그냥 호출하여 사용이 가능합니다.
메서드는 함수의 일종이긴 하지만 클래스 안에 속해 있고 클래스의 멤버 변수들을 이용해서 구현된 것을 메서드라고 합니다.

스택 메모리 영역

  • 함수가 호출될 때 지역 변수들이 사용하는 메모리 영역
  • 함수가 종료가 되면 자동으로 반환되는 메모리 영역

 

 

※ 스택 메모리 설명을 위한 코드 예시

public class StackMemory {

    int sSum(int num1, int num2) {
        int result = num1 + num2;
        return result;
    }
    public static void main(String[] args) {
        StackMemory stackMemory = new StackMemory();
        int mNum1 = 10;
        int mNum2 = 20;
        int total = stackMemory.sSum(mNum1,mNum2);
        
    }
}

 

(1) 프로그램 시작 시 main 메서드가 실행되어 main 메서드의 지역 변수인 mNum1, mNum2, total이 스택 메모리 영역에 생성이 됩니다.

 

(2) stackMemory.sSum(mNum1, mNum2) 인스턴스를 생성 후 메서드를 호출해서 sSum 메서드의 지역변수인 num1, num2, result가 스택 메모리 영역에 생성이 됩니다.

 

(3) sSum() 함수를 호출하여 사용이 끝나 자동으로 스택 메모리 영역에서 사라집니다.

 

(4) 프로그램 종료 시 main 메서드도 종료되기 때문에 main 메서드도 스택 메모리 영역에서 사라집니다.

'Java' 카테고리의 다른 글

[Java] Static Block 실행 시점  (2) 2024.03.15
[Java] ConcurrentModificationException 원인 및 해결 방법  (0) 2022.11.22
[Java] this란?  (0) 2022.05.01