Det statiska nyckelordet används för att konstruera metoder som kommer att existera oavsett om några instanser av klassen genereras eller inte. Varje metod som använder det statiska nyckelordet kallas en statisk metod.
Funktioner av statisk metod:
- En statisk metod i Java är en metod som är en del av en klass snarare än en instans av den klassen.
- Varje instans av en klass har tillgång till metoden.
- Statiska metoder har tillgång till klassvariabler (statiska variabler) utan att använda klassens objekt (instans).
- Endast statisk data kan nås med en statisk metod. Det går inte att komma åt data som inte är statiska (instansvariabler).
- I både statiska och icke-statiska metoder kan statiska metoder nås direkt.
Syntax för att deklarera den statiska metoden:
Access_modifier static void methodName() { // Method body. }> Klassens namn kan användas för att anropa eller komma åt statiska metoder.
Syntax för att anropa en statisk metod:
maskinskrivet datum och tid
className.methodName();>
Exempel 1: Den statiska metoden har inte tillgång till instansvariabeln
JVM kör den statiska metoden först, följt av skapandet av klassinstanser. Eftersom inga objekt är tillgängliga när den statiska metoden används. En statisk metod har inte tillgång till instansvariabler. Som ett resultat kan en statisk metod inte komma åt en klasss instansvariabel.
Java
returnerar arrayer 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();> >}> }> |
>
>Produktion
40 50 40>
Exempel 2: I både statiska och icke-statiska metoder är statiska metoder direkt åtkomliga.
Java
byt namn på linux-katalogen
// 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();> >}> }> |
>
sträng java indexof
>Produktion
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Varför använda statiska metoder?
- För att komma åt och ändra statiska variabler och andra icke-objektbaserade statiska metoder.
- Verktygs- och hjälpklasser använder ofta statiska metoder.
Begränsningar i statiska metoder:
- Icke-statiska datamedlemmar eller icke-statiska metoder kan inte användas av statiska metoder, och statiska metoder kan inte anropa icke-statiska metoder direkt.
- I en statisk miljö är detta och super inte tillåtna att användas.
Varför är den huvudsakliga metoden i Java statisk?
Det beror på att man inte behöver anropa en statisk metod för objektet. Om det var en icke-statisk funktion skulle JVM först bygga ett objekt innan metoden main() anropades, vilket resulterade i en extra svårighet med minnesallokering.
Skillnaden mellan den statiska metoden och instansmetoden
| Instansmetoder | Statiska metoder |
|---|---|
| Det kräver ett objekt av klassen. | Det kräver inte ett objekt i klassen. |
| Den kan komma åt alla attribut i en klass. | Den kan bara komma åt det statiska attributet för en klass. |
| Metoderna kan endast nås med hjälp av objektreferens. | Metoden nås endast med klassnamn. |
| Syntax: Objref.methodname() | Syntax: klassnamn.metodnamn() |
| Det är ett exempel på programmering med pass-by-value. | Det är ett exempel på programmering med pass-by-referens. |