Det statiske nøkkelordet brukes til å konstruere metoder som vil eksistere uavhengig av om noen forekomster av klassen genereres eller ikke. Enhver metode som bruker det statiske nøkkelordet blir referert til som en statisk metode.
Funksjoner ved statisk metode:
- En statisk metode i Java er en metode som er en del av en klasse i stedet for en forekomst av den klassen.
- Hver forekomst av en klasse har tilgang til metoden.
- Statiske metoder har tilgang til klassevariabler (statiske variabler) uten å bruke klassens objekt (instans).
- Bare statiske data kan nås med en statisk metode. Den kan ikke få tilgang til data som ikke er statiske (forekomstvariabler).
- I både statiske og ikke-statiske metoder kan statiske metoder nås direkte.
Syntaks for å erklære den statiske metoden:
Access_modifier static void methodName() { // Method body. }> Navnet på klassen kan brukes til å påkalle eller få tilgang til statiske metoder.
Syntaks for å kalle en statisk metode:
className.methodName();>
Eksempel 1: Den statiske metoden har ikke tilgang til instansvariabelen
JVM kjører den statiske metoden først, etterfulgt av opprettelsen av klasseforekomster. Fordi ingen objekter er tilgjengelige når den statiske metoden brukes. En statisk metode har ikke tilgang til instansvariabler. Som et resultat kan en statisk metode ikke få tilgang til en klasses forekomstvariabel.
Java
lesing fra en csv-fil i java
// Java program to demonstrate that> // The static method does not have> // access to the instance variable> > import> java.io.*;> > public> class> GFG {> >// static variable> >static> int> a =>40>;> > >// instance variable> >int> b =>50>;> > >void> simpleDisplay()> >{> >System.out.println(a);> >System.out.println(b);> >}> > >// Declaration of a static method.> >static> void> staticDisplay()> >{> >System.out.println(a);> >}> > >// main method> >public> static> void> main(String[] args)> >{> >GFG obj =>new> GFG();> >obj.simpleDisplay();> > >// Calling static method.> >staticDisplay();> >}> }> |
>
>Produksjon
40 50 40>
Eksempel 2: I både statiske og ikke-statiske metoder får man direkte tilgang til statiske metoder.
Java
// Java program to demonstrate that> // In both static and non-static methods,> // static methods are directly accessed.> > import> java.io.*;> > public> class> StaticExample {> > >static> int> num =>100>;> >static> String str =>'GeeksForGeeks'>;> > >// This is Static method> >static> void> display()> >{> >System.out.println(>'static number is '> + num);> >System.out.println(>'static string is '> + str);> >}> > >// non-static method> >void> nonstatic()> >{> >// our static method can accessed> >// in non static method> >display();> >}> > >// main method> >public> static> void> main(String args[])> >{> >StaticExample obj =>new> StaticExample();> > >// This is object to call non static function> >obj.nonstatic();> > >// static method can called> >// directly without an object> >display();> >}> }> |
>
>Produksjon
"hva er forskjellen mellom en løve og en tiger"
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Hvorfor bruke statiske metoder?
- For å få tilgang til og endre statiske variabler og andre ikke-objektbaserte statiske metoder.
- Verktøy- og hjelpeklasser bruker ofte statiske metoder.
Begrensninger i statiske metoder:
- Ikke-statiske datamedlemmer eller ikke-statiske metoder kan ikke brukes av statiske metoder, og statiske metoder kan ikke kalle ikke-statiske metoder direkte.
- I et statisk miljø er dette og super ikke tillatt å brukes.
Hvorfor er hovedmetoden i Java statisk?
Det er fordi det ikke er nødvendig å kalle en statisk metode for objektet. Hvis det var en ikke-statisk funksjon, ville JVM først bygge et objekt før den kaller main()-metoden, noe som resulterte i en ekstra minneallokeringsvanskelighet.
Forskjellen mellom den statiske metoden og instansmetoden
| Forekomstmetoder | Statiske metoder |
|---|---|
| Det krever et objekt av klassen. | Det krever ikke et objekt av klassen. |
| Den kan få tilgang til alle attributter til en klasse. | Den kan bare få tilgang til det statiske attributtet til en klasse. |
| Metodene kan kun nås ved å bruke objektreferanse. | Metoden er kun tilgjengelig med klassenavn. |
| Syntaks: Objref.methodname() | Syntaks: klassenavn.metodenavn() |
| Det er et eksempel på pass-by-value-programmering. | Det er et eksempel på pass-by-referanse programmering. |