Statiskais atslēgvārds tiek izmantots, lai izveidotu metodes, kas pastāvēs neatkarīgi no tā, vai tiek ģenerēti kādi klases gadījumi. Jebkura metode, kas izmanto statisko atslēgvārdu, tiek saukta par statisku metodi.
Statiskās metodes iezīmes:
trīskārša ziema
- Java statiskā metode ir metode, kas ir klases daļa, nevis šīs klases gadījums.
- Katrai klases gadījumam ir piekļuve metodei.
- Statiskajām metodēm ir piekļuve klases mainīgajiem (statiskajiem mainīgajiem), neizmantojot klases objektu (instanci).
- Ar statisku metodi var piekļūt tikai statiskiem datiem. Tas nevar piekļūt datiem, kas nav statiski (instanču mainīgie).
- Gan statiskajās, gan nestatiskajās metodēs statiskajām metodēm var piekļūt tieši.
Sintakse statiskās metodes deklarēšanai:
Access_modifier static void methodName() { // Method body. }> Klases nosaukumu var izmantot, lai izsauktu vai piekļūtu statiskām metodēm.
Sintakse statiskas metodes izsaukšanai:
className.methodName();>
1. piemērs. Statiskajai metodei nav piekļuves instances mainīgajam
JVM vispirms palaiž statisko metodi, pēc tam izveido klases gadījumus. Tā kā, izmantojot statisko metodi, neviens objekts nav pieejams. Statiskajai metodei nav piekļuves gadījumu mainīgajiem. Tā rezultātā statiskā metode nevar piekļūt klases gadījuma mainīgajam.
Java
python generē uuid
// 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();> >}> }> |
r c valodā
>
>Izvade
40 50 40>
2. piemērs: gan statiskajās, gan nestatiskajās metodēs statiskām metodēm tiek tieši piekļūts.
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();> >}> }> |
sql secībā pēc nejaušības principa
>
>Izvade
vesels skaitlis līdz virknei
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Kāpēc izmantot statiskās metodes?
- Lai piekļūtu un mainītu statiskos mainīgos un citas statiskās metodes, kas nav balstītas uz objektiem.
- Lietderības un palīdzības klasēs bieži tiek izmantotas statiskas metodes.
Statisko metožu ierobežojumi:
- Ar statiskām metodēm nevar izmantot nestatiskos datu elementus vai nestatiskās metodes, un statiskās metodes nevar tieši izsaukt nestatiskās metodes.
- Statiskā vidē šo un super nav atļauts izmantot.
Kāpēc ir galvenā Java metode statisks?
Tas ir tāpēc, ka objektam nav nepieciešams izsaukt statisko metodi. Ja tā būtu nestatiska funkcija, JVM vispirms izveidotu objektu pirms main() metodes izsaukšanas, kā rezultātā rodas papildu atmiņas piešķiršanas grūtības.
Atšķirība starp statisko metodi un instances metodi
| Instanču metodes | Statiskās metodes |
|---|---|
| Tam nepieciešams klases objekts. | Tam nav nepieciešams klases objekts. |
| Tas var piekļūt visiem klases atribūtiem. | Tas var piekļūt tikai klases statiskajam atribūtam. |
| Metodēm var piekļūt, tikai izmantojot objekta atsauci. | Metodei var piekļūt tikai pēc klases nosaukuma. |
| Sintakse: Objref.methodname() | Sintakse: className.methodname() |
| Tas ir garāmejošu vērtību programmēšanas piemērs. | Tas ir caurlaides programmēšanas piemērs. |