public void ex1(final int number){
}
결론
Java에서 파라미터 변수에 final
예약어를 사용하면, 메소드 내부에서 변수의 재할당이 불가능해진다. 이는 메소드 로직에서 재할당을 막아 안정성을 높일 수 있다.
메소드 내 파라미터 변수의 동작 과정
Java에서 파라미터 변수가 메소드 내부에서 동작하게 되는 과정은 아래와 같다.
- 개발자는 메소드에 파라미터 변수를 선언한다.
- 메소드 호출 시, 파라미터 변수 타입에 따른 변수 A가 생성된다.
- 메소드 호출로 받아온 인자(argument)를 변수 A에 할당한다.
- 메소드 내부 블럭에서는 개발자가 선언한 변수명으로 새로운 변수 B가 생성된다.
- 변수 B는 변수 A의 값을 받아온다. 이때 값 전달 방식은 변수의 타입에 따라 Pass by Value 혹은 Pass by Reference가 된다.
final
예약어의 역할
파라미터 변수에 final
예약어를 사용하면, 위의 과정 중 4번에서 메소드 내부 블럭을 위한 변수 B 생성 시 final
이 적용된다. 즉, 이 변수 B는 메소드 내부에서 재할당이 불가능하게 된다.
final
예약어의 효과
final
예약어를 파라미터에 사용하면 다음과 같은 효과가 있다.
- 메소드 로직에서 파라미터의 재할당을 제한할 수 있다. 이는 코드의 안정성을 높이고, 예상치 못한 동작을 방지한다.
- 객체를 파라미터로 전달한 경우, Pass by Reference 방식이기 때문에 객체 내부의 멤버 변수는 여전히 재할당이 가능하다.
런타임 상수 보장
또한, final
은 런타임 중에 상수를 보장하므로, 컴파일 오류를 방지하는데 도움이 된다.