본문 바로가기

java(자바)

[java(자바)] final, finally, finalize의 차이점? _디버깅의 눈물

자바에서 final, finally, finalize는 서로 다른 용도로 사용되는 제어자와 예약어입니다.

 

1.final

 

final은 변수, 메서드, 클래스에 사용될 수 있는 제어자입니다. final이 변수에 사용될 경우 변수의 값이 변경될 수 없음을 나타내며, 메서드에 사용될 경우 메서드를 오버라이딩할 수 없음을 나타냅니다. 또한 클래스에 사용될 경우 상속을 금지하는 역할을 합니다.

 

예시:

 

final int num = 10;
final class MyClass {...}
final void myMethod() {...}

 

 

 

2.finally

 

finally는 try-catch 블록에서 사용되는 예약어로, 예외 발생 여부와 관계없이 항상 실행되는 코드 블록을 나타냅니다. 예를 들어 try 블록에서 예외가 발생하더라도, 해당 예외와 관계없이 finally 블록이 실행됩니다.

 

예시:

 

 

try {
  // 예외 발생 가능성이 있는 코드
} catch (Exception e) {
  // 예외 처리
} finally {
  // 예외 발생 여부와 관계없이 항상 실행되는 코드
}

 

 

 

3.finalize

 

finalize 메서드는 객체가 가비지 컬렉션에 의해 수거되기 전에 호출되는 메서드입니다. Finalize() 메서드는 일반적으로 객체의 자원 해제 등의 마무리 작업을 수행하는데 사용됩니다. 자바9부터는 deprecated되어 더 이상 사용되지 않습니다.

 

예시:

 
protected void finalize() throws Throwable {
  // 객체 소멸 전에 필요한 처리
  super.finalize();
}