Skip to main content Link Search Menu Expand Document (external link) Copy Copied
public void ex1(final int number){
}

결론

Java에서 파라미터 변수에 final 예약어를 사용하면, 메소드 내부에서 변수의 재할당이 불가능해진다. 이는 메소드 로직에서 재할당을 막아 안정성을 높일 수 있다.


메소드 내 파라미터 변수의 동작 과정

Java에서 파라미터 변수가 메소드 내부에서 동작하게 되는 과정은 아래와 같다.

  1. 개발자는 메소드에 파라미터 변수를 선언한다.
  2. 메소드 호출 시, 파라미터 변수 타입에 따른 변수 A가 생성된다.
  3. 메소드 호출로 받아온 인자(argument)를 변수 A에 할당한다.
  4. 메소드 내부 블럭에서는 개발자가 선언한 변수명으로 새로운 변수 B가 생성된다.
  5. 변수 B는 변수 A의 값을 받아온다. 이때 값 전달 방식은 변수의 타입에 따라 Pass by Value 혹은 Pass by Reference가 된다.

final 예약어의 역할

파라미터 변수에 final 예약어를 사용하면, 위의 과정 중 4번에서 메소드 내부 블럭을 위한 변수 B 생성 시 final이 적용된다. 즉, 이 변수 B는 메소드 내부에서 재할당이 불가능하게 된다.


final 예약어의 효과

final 예약어를 파라미터에 사용하면 다음과 같은 효과가 있다.

  • 메소드 로직에서 파라미터의 재할당을 제한할 수 있다. 이는 코드의 안정성을 높이고, 예상치 못한 동작을 방지한다.
  • 객체를 파라미터로 전달한 경우, Pass by Reference 방식이기 때문에 객체 내부의 멤버 변수는 여전히 재할당이 가능하다.

런타임 상수 보장

또한, final은 런타임 중에 상수를 보장하므로, 컴파일 오류를 방지하는데 도움이 된다.