Verschil tussen eind- en statisch

In wiskunde en wetenschap is de constante een term die een bepaalde waarde aanduidt, zoals 'π', wat een praktische naam is voor het getal 3.14159. Java heeft zijn soort constanten. Dit zijn variabelen die onder (a) niet behoren tot een object en sub (b) veranderen hun waarde niet als ze eenmaal zijn ingesteld. Het statische woord in de variabele declaratie geeft aan dat de variabele niet tot een object behoort. Er is een vergelijkbaar zoekwoord dat zegt dat de variabele waarde slechts eenmaal wordt ingesteld en niet zal veranderen. Dit is het sleutelwoord finale. Dit sleutelwoord is niet beperkt tot statische variabelen, maar kan worden gebruikt met instantievariabelen, lokale variabelen en zelfs met variabelen die parametermethoden zijn. Door de variabele als een finale te declareren, laat u aan iedereen zien dat de variabele tijdens het bestaan ​​dezelfde waarde heeft. Nog belangrijker is dat de compiler elke poging detecteert om de waarde van een zo verklaarde variabele te wijzigen en deze als een fout te rapporteren. Wat de Java-terminologie betreft, wordt de variabele die als statisch en definitief wordt aangemerkt, een constante genoemd.

Wat is definitief?

De laatste modifier kan op verschillende plaatsen in de Java-programmeertaal worden gebruikt. Hier zullen we het meest voorkomende gebruik behandelen. De laatste wijziging kan worden toegepast op de declaratie van een lokale variabele, functieargument en niet-statische of statische lidvariabelen. In deze context converteert de variabele modifier naar een constante. De vertaler van de vertaaltaal zal controleren of een bepaalde code probeert de waarde aan te passen, en dergelijke pogingen worden als een fout gemarkeerd. Hier is een voorbeeld.

uiteindelijke int-waarde = 17;

Statische lidvariabelen met deze wijziging worden gebruikt als globale constanten; bijvoorbeeld, in de java.lang.Math variabele PI, wordt dit exact vermeld

openbare statische laatste dubbele PI = 3.14159265358979323846;

We kunnen de laatste wijziging toepassen op de functieverklaring. De functie gemarkeerd met de finale kan niet langer worden overruled - dat is de uiteindelijke implementatie. De abstracte methoden kunnen niet als definitief worden verklaard - het feit dat ze abstract zijn, betekent dat ze niet worden uitgevoerd; het kan zeker niet hun ultieme staat zijn. Hier is een voorbeeld.

openbare finale int meaningLife ()

terug 42;

We kunnen de laatste wijziging toepassen op de klassenverklaring. De klasse die is gemarkeerd met de finale kan niet langer erven - dat is de uiteindelijke implementatie. Het is duidelijk dat abstracte klasse niet tegelijkertijd definitief kan zijn. Hier is een voorbeeld

openbare eindklasse Gesloten

// ...

Een van de voorbeelden uit de eindige klasse is de klasse java.lang.String - deze is eindig, dus niemand zou het kunnen erven en zo toegang krijgen tot de ledvariabelen..

Wat is statisch?

Statische variabelen horen niet bij een specifieke instantie van klasse. Statische variabelen behoren tot de klasse zelf en in het geheugen zijn er slechts één locatie, ongeacht het aantal kopieën van die klasse dat in het geheugen is gemaakt. Niet-statische variabelen behoren tot klassenexemplaren - elke instantie van de klasse heeft zijn eigen kopie van dergelijke variabelen. Statische variabelen behoren tot de klasse - de klasse in het geheugen bewaart de waarden van dergelijke variabelen; alle voorbeeldklassen zien daarom dezelfde inhoud, zodat we kunnen overwegen statische variabelen te delen tussen alle klassen. Door de waarde-variabele bij te werken, zal de nieuwe waarde automatisch zichtbaar zijn voor alle instanties van die klasse. Statische filters kunnen worden toegepast op elk element dat wettelijk is gedeclareerd in een klasse. In het geval van lidmaatschapsvariabelen is het gevolg dat dergelijke lidvariabelen slechts op één plaats in het geheugen worden opgeslagen. Wat gebeurt er als het een methode is? Door de methode als statisch te declareren, is het bericht hetzelfde: de relevante methode behoort niet tot klassenklassen, maar tot de klasse zelf. Daarom ontvangen statische methoden geen verborgen verwijzing naar het object waarop ze worden aangeroepen; in statische referentiemethoden is dit niet beschikbaar. Inderdaad, het oproepen van statische methoden in het object is even verwarrend als het benaderen van statische lidvariabelen door te verwijzen naar deze referentie: in beide gevallen is het beter om gewoon de naam van de klasse, het punt en de naam van de aanroepmethode te schrijven.

Verschil tussen eind- en statisch

  1. veranderlijk

Statisch staat voor een variabele die gemeenschappelijk is voor alle objecten die een bepaalde klasse instantiëren, terwijl finale de constante definieert.

  1. Methode

Statisch is een methode die voor elke objectklasse hetzelfde is - wordt ook klasse-lid genoemd, bijvoorbeeld dat is de belangrijkste methode. Laatste methode kan niet worden verwerkt in de geërfde klasse.

  1. Klasse

De finale kan niet worden uitgebreid, d.w.z. staat geen subklassen toe. Statisch is niet van toepassing op klasse.

  1. Waarde

Om het simpel te zeggen, definieerde finaal dat de waarde niet kan worden gewijzigd (overschrijven). De statische waarde wordt ingesteld op de standaardwaarde, maar kan opnieuw worden geïnitialiseerd.

Definitief vs. statisch: vergelijkingsschema

Samenvatting van de definitieve en statische

  • Het belangrijkste statische werk biedt toegang, zelfs als er geen object is (exemplaar). Prominente klassen worden gedeclareerd via het sleutelwoord statisch. Als u niet wilt dat de waarde van sommige wijzigingen later in het programma verdwijnt, of als u wilt dat de compiler controleert en verbiedt, kunt u die belofte wijzigen in de finale. Er is een statisch blok voor de initialisatie. Het statische blok voor de initialisatie wordt gedeclareerd als de statische sleutel vóór de haakjes. Dit soort blok wordt één keer uitgevoerd tijdens het lezen van de les en initialiseert meestal de statische leden van de klas.