Aanbevolen, 2024

Editor'S Choice

Verschil tussen Final, Finally en Finalize in Java

De woorden 'final, finally, and finalize' liggen in de context van Java. Elk van hen heeft een ander functioneren. Het fundamentele verschil tussen definitief, definitief en definitief is dat finale een toegangsmodificator is, dat het uiteindelijk een blok is en dat finaliseren een methode is van een objectklasse. Er zijn enkele andere verschillen tussen final, finally en finalize die worden besproken in het vergelijkingsschema.

Vergelijkingstabel

Basis voor vergelijkingLaatsteTenslotteAfronden
basis-Final is een "Keyword" en "access modifier" in Java.Eindelijk is er een "blok" in Java.Finaliseren is een "methode" in Java.
Van toepassingFinal is een sleutelwoord dat van toepassing is op klassen, variabelen en methoden.Eindelijk is een blok dat altijd geassocieerd is met try en catch block.finalize () is een methode die van toepassing is op objecten.
Werken(1) Eindvariabele wordt constant en kan niet opnieuw worden toegewezen.
(2) Een laatste methode kan niet door de kindklasse worden opgeheven.
(3) Final Class kan niet worden verlengd.
Een "eindelijk" -blok, ruim de middelen op die gebruikt worden in het "probeer" -blok.Voltooi methode voert taken op die betrekking hebben op het object voordat het wordt vernietigd.
UitvoeringDe laatste methode wordt uitgevoerd tijdens zijn oproep."Eindelijk" -blok wordt uitgevoerd net na de uitvoering van het "try-catch" -blok.finalize () methode wordt uitgevoerd vlak voor de vernietiging van het object.

Definitie van Final

"Laatste" is een sleutelwoord in Java. Het is een toegangsmodificator. Het "definitieve" sleutelwoord is van toepassing op de klassen, methoden en variabelen. Laten we eens kijken hoe het werkt met elk van hen.

Laatste variabele

  • Wanneer een laatste sleutelwoord op de variabele wordt toegepast, kan dit niet verder worden gewijzigd.
  • Een laatste variabele moet worden geïnitialiseerd wanneer deze wordt gedeclareerd.
  • In een algemene coderingsconventie worden de laatste variabelen gedeclareerd in HOOFDLETTERS.
  • De laatste variabele bezet geheugen niet per instance.
 final int FILE_OPEN = 2; 

Eindmethoden

  • Wanneer een methode in de klas als definitief wordt verklaard, kan deze niet worden vervangen door de subklasse.
  • Kleine methoden die definitief worden verklaard, kunnen "inline" worden gemaakt door de compiler, waardoor de overhead van functieaanroepen wordt verminderd en de prestatieverbeteringen worden verbeterd.
  • Overschreven methodeaanroep, worden dynamisch opgelost, maar wanneer een methode als definitief wordt verklaard, kan deze niet worden genegeerd. Daarom kan de functie aanroepen tijdens het compileren worden opgelost.
 klasse A {final void meth () {System.out.println ("Dit is een laatste methode."); }} klasse B breidt A uit {void meth () {// Clas B kan de methode van klasse A niet overerven. System.out.println ("Does not override"); }} 

Final Class

  • Wanneer een klasse als definitief wordt verklaard, kan deze niet worden overgenomen door een subklasse.
  • Als een klasse als definitief wordt verklaard, worden automatisch alle methoden definitief verklaard.
  • Je kunt een klasse niet als 'abstract' en 'definitief' verklaren.
 laatste klasse A {// ...} klasse B verlengt A {// Klasse B kan klasse A niet erven // ...} 

Definitie van Eindelijk

  • In Java is "eindelijk" een blok dat altijd wordt geassocieerd met het try / catch-blok.
  • Het "eindelijk" -blok wordt uitgevoerd na het try / catch-blok en vóór de code volgend op try / catch-blok.
  • Het "eindelijk" -blok zal uitvoeren of de uitzondering wordt gegenereerd of niet.
  • Wanneer een uitzondering wordt gegenereerd en geen vangblok gelijk is aan de uitzondering, wordt het blok "Eindelijk" uitgevoerd.
  • Wanneer een methode vanuit het try / catch-blok terugkeert naar de beller via een niet-afgevangen uitzondering of een expliciete retourinstructie, wordt het "finally" -blok uitgevoerd vlak voordat de methode terugkeert naar de beller.
  • Het "finally" -blok wordt gebruikt om de resources op te ruimen of om het geheugen dat wordt gebruikt in het blok "try" vrij te maken.
  • Het "finally" -blok is optioneel, maar het is een goede gewoonte om uiteindelijk te blokkeren na het try / catch-blok.
 class FinallyExample {// Deze methode gooit een uitzondering uit de methode. static void procA () {try {System.out.println ("inside procA"); gooi nieuwe RuntimeException ("demo"); } eindelijk {System.out.println ("procA's eindelijk"); }} // Return vanuit een try-blok. static void procB () {try {System.out.println ("inside procB"); terug te keren; } eindelijk {System.out.println ("procB's finally"); }} // Voer een try-blok normaal uit. static void procC () {try {System.out.println ("inside procC"); } eindelijk {System.out.println ("procC's finally"); }} public static void main (String args []) {try {procA (); } catch (Uitzondering e) {System.out.println ("Uitgesloten uitzondering"); } procB (); procC (); }} // output binnen de proca's van proca wordt uiteindelijk uit de weg geruimd binnen procB's eindelijk in ProcC-procC's 

Definitie van Finalize

  • Finaliseren is een methode in een objectklasse.
  • Een object bevat mogelijk niet-java-bronnen, zoals bestandsingangen; dan moet het worden bevrijd voordat het wordt vernietigd.
  • Deze methode wordt aangeroepen door de garbage collector voordat deze het object volledig vernietigt.
  • Deze methode voert opschoningsactiviteiten uit voor het object voordat het wordt vernietigd.

De algemene vorm van de methode finalize () is als volgt.

 protected void finalize () {// afrondingscode hier} 

De finalisatiemethode wordt gedeclareerd als beveiligd zodat deze niet van buiten de klas kan worden benaderd.

Deze methode wordt altijd aangeroepen voor de garbagecollection.

Belangrijkste verschillen tussen Final, Finally en Finalize

  1. Het sleutelwoorddefinitie is een toegangsmodificator, is eindelijk een blok en finaliseren is een methode.
  2. Het trefwoord finaal is van toepassing op de klassen, variabelen en methoden van de klassen, en is ten slotte een blok dat is gekoppeld aan het try-catch-blok dat wordt gebruikt om uitzonderingen af ​​te handelen, finaliseren is een methode die alleen op objecten werkt.
  3. De eenmaal gedeclareerde variabele wordt constant en kan niet opnieuw worden toegewezen, een methode die als definitief is gedeclareerd, kan niet worden opgeheven en klassen die eenmaal als definitief zijn verklaard, kunnen nooit worden geërfd. Het laatste blok wordt gebruikt voor het opruimen van de middelen die worden gebruikt door try and catch block. De laatste methode wordt gebruikt om de resources op te ruimen die door een object worden gebruikt voordat het object wordt vernietigd.

Conclusie:

Final, finally en finalize heeft een ander effect wanneer het wordt toegepast op een methode.

Top