Cuvântul cheie static este folosit pentru a construi metode care vor exista indiferent dacă sunt generate sau nu instanțe ale clasei. Orice metodă care utilizează cuvântul cheie static este denumită metodă statică.
Caracteristicile metodei statice:
- O metodă statică în Java este o metodă care face parte dintr-o clasă, mai degrabă decât o instanță a acelei clase.
- Fiecare instanță a unei clase are acces la metodă.
- Metodele statice au acces la variabilele clasei (variabilele statice) fără a utiliza obiectul clasei (instanță).
- Doar datele statice pot fi accesate printr-o metodă statică. Nu poate accesa date care nu sunt statice (variabile de instanță).
- Atât în metodele statice, cât și în cele non-statice, metodele statice pot fi accesate direct.
Sintaxă pentru declararea metodei statice:
Access_modifier static void methodName() { // Method body. }> Numele clasei poate fi folosit pentru a invoca sau accesa metode statice.
Sintaxă pentru a apela o metodă statică:
className.methodName();>
Exemplul 1: Metoda statică nu are acces la variabila de instanță
JVM rulează mai întâi metoda statică, urmată de crearea instanțelor de clasă. Pentru că niciun obiect nu este accesibil atunci când este utilizată metoda statică. O metodă statică nu are acces la variabilele de instanță. Ca rezultat, o metodă statică nu poate accesa variabila de instanță a unei clase.
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();> >}> }> |
>
>Ieșire
40 50 40>
Exemplul 2: atât în metodele statice, cât și în cele nestatice, metodele statice sunt accesate direct.
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();> >}> }> |
>
>Ieșire
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
De ce să folosiți metode statice?
- Pentru a accesa și modifica variabile statice și alte metode statice care nu sunt bazate pe obiecte.
- Clasele de utilitate și asistență folosesc frecvent metode statice.
Restricții în metodele statice:
- Membrii datelor non-statice sau metodele non-statice nu pot fi utilizați de metodele statice, iar metodele statice nu pot apela direct metode non-statice.
- Într-un mediu static, acest lucru și super nu pot fi folosite.
De ce este metoda principală în Java static?
Se datorează faptului că apelarea unei metode statice nu este necesară pentru obiect. Dacă ar fi o funcție non-statică, JVM ar construi mai întâi un obiect înainte de a apela metoda main(), rezultând o dificultate suplimentară de alocare a memoriei.
Diferența dintre metoda statică și metoda instanței
| Metode de instanță | Metode statice instanțierea java |
|---|---|
| Este nevoie de un obiect al clasei. | Nu necesită un obiect al clasei. |
| Poate accesa toate atributele unei clase. | Poate accesa doar atributul static al unei clase. |
| Metodele pot fi accesate numai folosind referința la obiect. | Metoda este accesată numai după numele clasei. |
| Sintaxă: Objref.methodname() | Sintaxă: className.methodname() |
| Este un exemplu de programare trece prin valoare. | Este un exemplu de programare trece-cu-referință. |