logo

statisks atslēgvārds Java valodā

The statisks atslēgvārds Java galvenokārt izmanto atmiņas pārvaldībai. Statiskais atslēgvārds Java tiek izmantots, lai koplietotu to pašu mainīgo vai metodi noteiktā klasē. Lietotāji var lietot statiskus atslēgvārdus ar mainīgajiem, metodēm, blokiem un ligzdotām klasēm. Statiskais atslēgvārds pieder klasei, nevis klases gadījums. Statiskais atslēgvārds tiek izmantots nemainīgam mainīgajam vai metodei, kas ir vienāda katram klases gadījumam.

The statisks atslēgvārds ir Java bezpiekļuves modifikators, kas ir piemērojams šādiem gadījumiem:



  1. Bloki
  2. Mainīgie lielumi
  3. Metodes
  4. Klases

Piezīme: Lai izveidotu statisku dalībnieku (bloku, mainīgo, metodi, ligzdotu klasi), pirms tā deklarācijas ievadiet atslēgvārdu statisks .

Statiskā atslēgvārda īpašības:

Šeit ir daži Java statiskā atslēgvārda raksturlielumi:

    Koplietotās atmiņas piešķiršana: statiskajiem mainīgajiem un metodēm atmiņas vieta tiek piešķirta tikai vienu reizi programmas izpildes laikā. Šī atmiņas vieta tiek koplietota starp visiem klases gadījumiem, kas padara statiskos dalībniekus noderīgus globālā stāvokļa vai koplietojamās funkcionalitātes uzturēšanai. Pieejams bez objekta instanču: statiskajiem dalībniekiem var piekļūt bez nepieciešamības izveidot klases gadījumu. Tas padara tos noderīgus, lai nodrošinātu utilītas funkcijas un konstantes, kuras var izmantot visā programmā. Saistīts ar klasi, nevis objektiem: statiskie dalībnieki ir saistīti ar klasi, nevis ar atsevišķiem objektiem. Tas nozīmē, ka izmaiņas statiskajā loceklī tiek atspoguļotas visos klases gadījumos un ka varat piekļūt statiskajiem dalībniekiem, izmantojot klases nosaukumu, nevis objekta atsauci. Nevar piekļūt nestatiskiem dalībniekiem: statiskās metodes un mainīgie nevar piekļūt nestatiskiem klases dalībniekiem, jo ​​tie nav saistīti ar kādu konkrētu klases gadījumu. Var pārslogot, bet nevar ignorēt : Statiskās metodes var pārslogot, kas nozīmē, ka varat definēt vairākas metodes ar tādu pašu nosaukumu, bet atšķirīgiem parametriem. Tomēr tos nevar ignorēt, jo tie ir saistīti ar klasi, nevis ar konkrētu klases gadījumu.

Ja dalībnieks ir pasludināts par statisku, tam var piekļūt, pirms tiek izveidoti visi tā klases objekti un bez atsauces uz nevienu objektu. Piemēram, zemāk esošajā java programmā mēs piekļūstam statiskajai metodei m1() neradot nevienu objektu Pārbaude klasē.



Java






// Java program to demonstrate that a static member> // can be accessed before instantiating a class> class> Test> {> >// static method> >static> void> m1()> >{> >System.out.println(>'from m1'>);> >}> >public> static> void> main(String[] args)> >{> >// calling m1 without creating> >// any object of class Test> >m1();> >}> }>

>

>

Izvade

from m1>

Statiskie bloki

Ja jums ir jāveic aprēķins, lai inicializētu savu statiskie mainīgie , varat deklarēt statisku bloku, kas tiek izpildīts tieši vienreiz, kad klase tiek ielādēta pirmo reizi.

Apsveriet šādu java programmu, kas demonstrē statisko bloku izmantošanu.

Java




// Java program to demonstrate use of static blocks> class> Test> {> >// static variable> >static> int> a =>10>;> >static> int> b;> > >// static block> >static> {> >System.out.println(>'Static block initialized.'>);> >b = a *>4>;> >}> >public> static> void> main(String[] args)> >{> >System.out.println(>'from main'>);> >System.out.println(>'Value of a : '>+a);> >System.out.println(>'Value of b : '>+b);> >}> }>

>

>

Izvade

Static block initialized. from main Value of a : 10 Value of b : 40>

Detalizētu rakstu par statiskajiem blokiem skatiet sadaļā Statiskie bloki

Statiskie mainīgie

Kad mainīgais tiek deklarēts kā statisks, tiek izveidota viena mainīgā kopija un tā tiek koplietota starp visiem objektiem klases līmenī. Statiskie mainīgie būtībā ir globāli mainīgie. Visiem klases gadījumiem ir viens un tas pats statiskais mainīgais.

Svarīgi punkti statiskajiem mainīgajiem:

  • Mēs varam izveidot statiskus mainīgos tikai klases līmenī. Skatīt šeit
  • statiskie bloki un statiskie mainīgie tiek izpildīti tādā secībā, kādā tie atrodas programmā.

Tālāk ir sniegta Java programma, lai parādītu, ka statiskie bloki un statiskie mainīgie tiek izpildīti tādā secībā, kādā tie atrodas programmā.

Java




// Java program to demonstrate execution> // of static blocks and variables> class> Test> {> >// static variable> >static> int> a = m1();> > >// static block> >static> {> >System.out.println(>'Inside static block'>);> >}> > >// static method> >static> int> m1() {> >System.out.println(>'from m1'>);> >return> 20>;> >}> > >// static method(main !!)> >public> static> void> main(String[] args)> >{> >System.out.println(>'Value of a : '>+a);> >System.out.println(>'from main'>);> >}> }>

>

>

Izvade

from m1 Inside static block Value of a : 20 from main>

Statiskās metodes

Kad metode ir deklarēta ar statisks atslēgvārdu, to sauc par statisko metodi. Visizplatītākais statiskās metodes piemērs ir galvenais ( ) metodi. Kā minēts iepriekš, jebkuram statiskam dalībniekam var piekļūt, pirms tiek izveidoti visi tā klases objekti, un bez atsauces uz kādu objektu. Metodēm, kas deklarētas kā statiskas, ir vairāki ierobežojumi:

  • Viņi var tikai tieši izsaukt citas statiskās metodes.
  • Viņi var tieši piekļūt tikai statiskiem datiem.
  • Viņi nevar atsaukties šis vai super jebkādā veidā.

Zemāk ir java programma, lai demonstrētu statisko metožu ierobežojumus.

Java




// Java program to demonstrate restriction on static methods> class> Test> {> >// static variable> >static> int> a =>10>;> > >// instance variable> >int> b =>20>;> > >// static method> >static> void> m1()> >{> >a =>20>;> >System.out.println(>'from m1'>);> > >// Cannot make a static reference to the non-static field b> >b =>10>;>// compilation error> > >// Cannot make a static reference to the> >// non-static method m2() from the type Test> >m2();>// compilation error> > >// Cannot use super in a static context> >System.out.println(>super>.a);>// compiler error> >}> > >// instance method> >void> m2()> >{> >System.out.println(>'from m2'>);> >}> > > > >public> static> void> main(String[] args)> >{> >// main method> >}> }>

>

>

pasvītrot iezīmējumā

Izvade:

prog.java:18: error: non-static variable b cannot be referenced from a static context b = 10; // compilation error ^ prog.java:22: error: non-static method m2() cannot be referenced from a static context m2(); // compilation error ^ prog.java:25: error: non-static variable super cannot be referenced from a static context System.out.println(super.a); // compiler error ^ prog.java:25: error: cannot find symbol System.out.println(super.a); // compiler error ^ symbol: variable a 4 errors>

Kad izmantot statiskos mainīgos un metodes?

Izmantojiet statisko mainīgo īpašumam, kas ir kopīgs visiem objektiem. Piemēram, klasē Students visiem studentiem ir vienāds koledžas nosaukums. Statisko mainīgo mainīšanai izmantojiet statiskās metodes.

Apsveriet šādu java programmu, kas ilustrē izmantošanu statisks atslēgvārdi ar mainīgajiem un metodēm.

Java




// A java program to demonstrate use of> // static keyword with methods and variables> // Student class> class> Student {> >String name;> >int> rollNo;> >// static variable> >static> String cllgName;> >// static counter to set unique roll no> >static> int> counter =>0>;> >public> Student(String name)> >{> >this>.name = name;> >this>.rollNo = setRollNo();> >}> >// getting unique rollNo> >// through static variable(counter)> >static> int> setRollNo()> >{> >counter++;> >return> counter;> >}> >// static method> >static> void> setCllg(String name) { cllgName = name; }> >// instance method> >void> getStudentInfo()> >{> >System.out.println(>'name : '> +>this>.name);> >System.out.println(>'rollNo : '> +>this>.rollNo);> >// accessing static variable> >System.out.println(>'cllgName : '> + cllgName);> >}> }> // Driver class> public> class> StaticDemo {> >public> static> void> main(String[] args)> >{> >// calling static method> >// without instantiating Student class> >Student.setCllg(>'XYZ'>);> >Student s1 =>new> Student(>'Alice'>);> >Student s2 =>new> Student(>'Bob'>);> >s1.getStudentInfo();> >s2.getStudentInfo();> >}> }>

>

>

Izvade

name : Alice rollNo : 1 cllgName : XYZ name : Bob rollNo : 2 cllgName : XYZ>

d

Statiskās klases

Var izveidot klasi statisks tikai tad, ja tā ir ligzdota klase. Mēs nevaram deklarēt augstākā līmeņa klasi ar statisku modifikatoru, bet varam deklarēt ligzdotās klases kā statiskas. Šāda veida klases sauc par ligzdotām statiskajām klasēm. Ligzdotajai statiskajai klasei nav nepieciešama atsauce uz ārējo klasi. Šajā gadījumā statiskā klase nevar piekļūt nestatiskiem ārējās klases dalībniekiem.

Piezīme: Statisku ligzdotu klasi skatiet a statiskā ligzdotā klase Java

Īstenošana:

Java




// A java program to demonstrate use> // of static keyword with Classes> import> java.io.*;> public> class> GFG {> >private> static> String str =>'techcodeview.com'>;> >// Static class> >static> class> MyNestedClass {> > >// non-static method> >public> void> disp(){> >System.out.println(str);> >}> >}> > >public> static> void> main(String args[])> >{> >GFG.MyNestedClass obj> >=>new> GFG.MyNestedClass();> >obj.disp();> >}> }>

>

>

Izvade

techcodeview.com>

Šeit ir Java programmas piemērs, kas parāda statiskā atslēgvārda izmantošanu:

Java




public> class> ExampleClass {> >public> static> int> count =>0>;> >public> int> id;> >public> ExampleClass() {> >count++;> >id = count;> >}> >public> static> void> printCount() {> >System.out.println(>'Number of instances: '> + count);> >}> >public> void> printId() {> >System.out.println(>'Instance ID: '> + id);> >}> >public> static> void> main(String[] args) {> >ExampleClass e1 =>new> ExampleClass();> >ExampleClass e2 =>new> ExampleClass();> >ExampleClass e3 =>new> ExampleClass();> >e1.printId();> >e2.printId();> >e3.printId();> >ExampleClass.printCount();> >}> }>

>

>

Izvade

Instance ID: 1 Instance ID: 2 Instance ID: 3 Number of instances: 3>

Priekšrocības:

    Atmiņas efektivitāte: statiskajiem dalībniekiem atmiņa tiek piešķirta tikai vienu reizi programmas izpildes laikā, kas var ievērojami ietaupīt lielu programmu atmiņu. Uzlabota veiktspēja: tā kā statiskie dalībnieki ir saistīti ar klasi, nevis ar atsevišķiem gadījumiem, tiem var piekļūt ātrāk un efektīvāk nekā nestatiskajiem dalībniekiem. Globālā pieejamība: statiskajiem dalībniekiem var piekļūt no jebkuras vietas programmā neatkarīgi no tā, vai ir izveidots klases gadījums. Lietderības metožu iekapsulēšana: statiskās metodes var izmantot, lai iekapsulētu utilītas funkcijas, kurām no objekta nav nepieciešama stāvokļa informācija. Tas var uzlabot koda organizēšanu un atvieglot utilītu funkciju atkārtotu izmantošanu vairākās klasēs. Konstantes: statiskus galīgos mainīgos var izmantot, lai definētu konstantes, kas tiek koplietotas visā programmā. Klases līmeņa funkcionalitāte: statiskās metodes var izmantot, lai definētu klases līmeņa funkcionalitāti, kurai no objekta nav nepieciešama nekāda stāvokļa informācija, piemēram, rūpnīcas metodes vai palīgfunkcijas.

Kopumā statiskais atslēgvārds ir spēcīgs rīks, kas var palīdzēt uzlabot jūsu Java programmu efektivitāti un organizāciju.