추천, 2024

에디터의 선택

Java에서 Final, Finally 및 Finalize 간의 차이점

'최종, 최종 및 마무리'라는 단어는 Java 컨텍스트에 있습니다. 그들 각각은 다른 기능을 제공합니다. final, finally 및 finalize의 기본적인 차이점은 final은 액세스 수정 자이며 finally 는 블록이며 finalize 는 객체 클래스의 메서드입니다. 비교 차트에서 논의되는 final, final 및 finalize에는 몇 가지 다른 차이점이 있습니다.

비교 차트

비교의 근거결정적인마침내마무리
기본Final은 Java의 "Keyword"및 "access modifier"입니다.마지막으로 Java의 "블록"입니다.Finalize는 Java의 "메소드"입니다.
응용할 수 있는Final은 클래스, 변수 및 메서드에 적용 할 수있는 키워드입니다.마지막으로 try 블록과 catch 블록이 항상 연관되어 있습니다.finalize ()는 객체에 적용 할 수있는 메소드입니다.
(1) 최종 변수는 일정하게되고 재 할당 할 수 없습니다.
(2) 최종 방법은 하위 클래스에 의해 오버라이드 될 수 없다.
(3) 최종 수업은 연장 할 수 없습니다.
"finally"블록은 "try"블록에서 사용 된 리소스를 정리합니다.Finalize 메서드는 파괴되기 전에 개체와 관련된 작업을 정리합니다.
실행최종 메소드는 호출시 실행됩니다."finally"블록은 "try-catch"블록 실행 직후에 실행됩니다.finalize () 메서드는 객체를 삭제하기 직전에 실행됩니다.

결승전의 정의

"Final"은 자바의 키워드입니다. 액세스 수정 자입니다. "final"키워드는 클래스, 메소드 및 변수에 적용 할 수 있습니다. 우리가 어떻게 그것들 각각과 함께 작동하는지 봅시다.

최종 변수

  • 최종 키워드가 변수에 적용되면 더 이상 수정할 수 없습니다.
  • 최종 변수는 선언 될 때 초기화되어야합니다.
  • 일반적인 코딩 규칙에서 최종 변수는 대문자로 선언됩니다.
  • 최종 변수는 인스턴스별로 메모리를 차지하지 않습니다.
 final int FILE_OPEN = 2; 

최종 방법

  • class에있는 메소드가 final로 선언되면 해당 서브 클래스로 대체 할 수 없습니다.
  • 최종 선언 된 작은 메서드는 컴파일러에서 "인라인"으로 만들 수 있으므로 함수 호출의 오버 헤드를 줄이고 성능을 향상시킬 수 있습니다.
  • 재정의 된 메서드 호출은 동적으로 확인되지만 메서드가 final로 선언되면 재정의 될 수 없습니다. 따라서 함수 호출은 컴파일 타임에 해결할 수 있습니다.
 class A {final void meth () {System.out.println ( "이것은 최종 메소드입니다."); }} class B extends A {void meth () {// Clas B는 클래스 A의 메소드를 상속받지 못합니다. System.out.println ( "무시하지 않습니다"); }} 

최종 등급

  • 클래스가 final로 선언되면 클래스를 상속 할 수 없습니다.
  • 클래스를 final로 선언하면 자동으로 모든 메서드가 final로 선언됩니다.
  • 클래스를 "추상"과 "최종"둘 다로 선언 할 수는 없습니다.
 final class A {// ...} class B extends A {// 클래스 B는 클래스 A를 상속받을 수 없다 // ...} 

마지막 정의

  • Java에서 "finally"는 항상 try / catch 블록과 연결된 블록입니다.
  • "finally"블록은 try / catch 블록 다음에 실행되고 try / catch 블록 다음의 코드 앞에 실행됩니다.
  • "finally"블록은 예외가 발생했는지 여부를 실행합니다.
  • 예외가 발생하고 catch 블록이 심지어 그 예외와 일치하면 "finally"블록이 실행됩니다.
  • 메소드가 캐치되지 않은 예외 또는 명시 적 return 문을 통해 try / catch 블록 내부에서 호출자에게 반환되면 메서드가 호출자에게 반환되기 직전에 finally 블록이 실행됩니다.
  • "finally"블록은 리소스를 정리하거나 "try"블록에서 사용 된 메모리를 해제하는 데 사용됩니다.
  • "finally"블록은 선택 사항이지만 try / catch 블록 다음에 finally 블록을 작성하는 것이 좋습니다.
 class FinallyExample {//이 메소드는 메소드에서 예외를 throw합니다. static void procA () {try {System.out.println ( "내부 procA"); 새로운 RuntimeException ( "demo") 던짐; } finally {System.out.println ( "procA 's finally"); }} // try 블록 내에서 돌아옵니다. static void procB () {try {System.out.println ( "내부 procB"); 반환; } finally {System.out.println ( "procB 's finally"); }} // try 블록을 정상적으로 실행합니다. static void procC () {try {System.out.println ( "내부 procC"); } finally {System.out.println ( "procC 's finally"); }} public static void main (String args []) {try {procA (); } catch (Exception e) {System.out.println ( "Exception caught"); } procB (); procC (); }} // procA procA의 내부에서 결과를 출력합니다. procB procB 내부에서 잡힌 Exception은 결국 procC procC의 안에 있습니다. 

최종 정의의 정의

  • Finalize는 객체 클래스의 한 메소드입니다.
  • 객체는 파일 핸들과 같은 자바가 아닌 리소스를 보유하고있을 수 있습니다. 파괴되기 전에 해제되어야합니다.
  • 이 메소드는 객체를 완전히 파괴하기 전에 가비지 컬렉터에 의해 호출됩니다.
  • 이 메서드는 소멸되기 전에 개체에 대한 정리 작업을 수행합니다.

finalize () 메소드의 일반적인 형식은 다음과 같습니다.

 protected void finalize () {// 최종화 코드} 

finalize 메소드는 protected 클래스로 선언되므로 클래스 외부에서 액세스 할 수 없습니다.

이 메서드는 항상 가비지 수집 전에 호출됩니다.

최종, 최종 및 최종 사이의 주요 차이점

  1. 키워드 final은 액세스 수정 자이며, 마지막으로 블록이며 finalize는 메소드입니다.
  2. 키워드 final은 클래스의 클래스, 변수 및 메서드에 적용 할 수 있으며 finally는 예외를 처리하는 데 사용되는 try catch 블록과 관련된 블록이며 finalize는 객체에서만 작동하는 메서드입니다.
  3. final로 선언 된 변수는 상수가되어 다시 재 할당 할 수 없으므로 final로 선언 된 메서드를 재정의 할 수 없으며 final로 선언 된 클래스는 상속 될 수 없습니다. finally 블록은 try 및 catch 블록에서 사용하는 리소스를 정리하는 데 사용됩니다. finalize 메서드는 객체가 파괴되기 전에 객체가 사용하는 리소스를 정리하는 데 사용됩니다.

결론:

최종, 최종 및 종결은 메소드에 적용 할 때 다른 효과를 갖습니다.

Top