Kako djeluju statička polja u Javi

click fraud protection

Ponekad je korisno imati vrijednosti koje se dijele na sve instance određene klase. Statička polja i statičke konstante omogućiti ovu vrstu dijeljenja pripadanjem članu klasa a ne na stvarne predmete.

Statički modifikator

Polja i metode definirane u klasi uobičajeno se mogu koristiti samo kada je stvoren objekt te vrste klase. Na primjer, razmislite o jednostavnoj klasi predmeta koja prati trgovinu u trgovini:

 Predmet javne klase {

 privatni string stringName;


 javna stavka (String itemName)

 {

 this.itemName = itemName;

 }


 javni niz getItemName ()

 {

 povratna stavkaName;

 }

 } 

Da bismo mogli koristiti metodu getItemName (), prvo moramo stvoriti objekt Item, u ovom slučaju catFood:

 javna klasa StaticExample {


 javni statički void main (String [] args) {

 Item catFood = novi predmet ("Whiskas");

 System.out.println (catFood.getItemName ());

 }

 } 

Međutim, ako je statički modifikator uključen u deklaraciju polja ili metode, nijedna instanca klase nije potrebni za upotrebu polja ili metode - pridruženi su razredu, a ne pojedincu objekt. Ako se osvrnete na gornji primjer, vidjet ćete da se statički modifikator već koristi u

instagram viewer
deklaracija glavne metode:

 javnost statički void main (String [] args) { 

glavna metoda je statička metoda za koji ne zahtijeva postojanje objekta prije nego što ga se može nazvati. Kako je main () početna točka za bilo koji Java program, u stvari već ne postoje objekti koji bi ga mogli zvati. Mogli biste, ako vam se čini kao da imate program koji se stalno zove, to učiniti:

 javna klasa StaticExample {


 javni statički void main (String [] args) {


 String [] s = {"slučajno", "string"};

 StaticExample.main (s);

 }

 }


Nije baš korisno, ali primijetite kako se glavna () metoda može nazvati bez instancije klase StaticExample.

Što je statičko polje?

Statička polja su poznata i kao klasa polja. To su jednostavno polja koja u svojim deklaracijama imaju statički modifikator. Na primjer, vratimo se na klasu predmeta i dodati statičko polje:

 Predmet javne klase {


 // statičko polje uniqueId

 privatni statički int uniqueId = 1;


 private int itemId;

 privatni string stringName;


 javna stavka (String itemName)

 {

 this.itemName = itemName;

 itemId = jedinstveniId;

 UNIQUEID ++;

 }

 }


Polja itemId i itemName su normalna nestatička polja. Kada se stvori instanca klase predmeta, ova polja će imati vrijednosti koje se nalaze unutar tog objekta. Ako se stvori još jedan objekt Item, i on će imati polja itemId i itemName za pohranjivanje vrijednosti.

Međutim, statičko polje jedinstvenog ID-a sadrži vrijednost koja će biti ista u svim objektima predmeta. Ako postoji 100 predmeta predmeta, bit će 100 primjeraka polja itemId i itemName, ali samo jedno jedinstvenoIdic statičko polje.

U gornjem primjeru, jedinstvenId koristi se za davanje svakom predmetu predmeta jedinstveni broj. To je lako učiniti ako svaki predmet koji se stvori preuzme trenutnu vrijednost u statičkom polju jedinstvenog ID-a, a zatim ga povećava za jedan. Upotreba statičkog polja znači da svaki objekt ne treba znati druge objekte da bi dobio jedinstveni ID. Ovo bi moglo biti korisno ako želite znati redoslijed kreiranja objekata predmeta.

Što je statički konstanta?

Statičke konstante potpuno su slične statičkim poljima, osim što se njihove vrijednosti ne mogu mijenjati. U deklaraciji na terenu navedeno je konačni i statički koriste se modifikatori. Na primjer, možda bi klasa predmeta trebala nametnuti ograničenje na duljinu nazivaName. Mogli bismo stvoriti statičku konstantu maxItemNameLength:

 Predmet javne klase {


 privatni statički int id = 1;

 javni statički konačni int maxItemNameLength = 20;


 private int itemId;

 privatni string stringName;


 javna stavka (String itemName) 

 {

 ako (itemName.length ()> maxItemNameLength)

 {

 this.itemName = itemName.substring (0,20);

 }

 drugo

 {

 this.itemName = itemName;

 }

 itemId = id;

 ID ++;

 } } 

Kao i kod statičkih polja, statičke konstante su pridružene klasi, a ne pojedinačnom objektu:

 javna klasa StaticExample {


 javni statički void main (String [] args) {


 Item catFood = novi predmet ("Whiskas");

 System.out.println (catFood.getItemName ());

 System.out.println (Item.maxItemNameLength);

 }

 }


Dvije su važne stvari koje se trebaju primijetiti u vezi sa statičkom konstantom maxItemNameLength:

  • Deklariran je kao javno polje. Općenito je loša ideja objaviti terensku javnost u bilo kojoj klasi koju dizajnirate, ali u ovom slučaju nije važno. Vrijednost konstante ne može se mijenjati.
  • Statička konstanta koristi se od naziva klase Item, a ne od predmeta Item.

Statičke konstante mogu se vidjeti kroz Java API. Na primjer, the cijela klasa omota ima dvije koje pohranjuju maksimalne i minimalne vrijednosti int vrsta podataka mogu imati:

 System.out.println ("Maksimalna vrijednost za int je:" + Integer. MAX_VALUE);

 System.out.println ("Min vrijednost za int je:" + Integer. MIN_VALUE);


 Izlaz:

 Maksimalna vrijednost za int je: 2147483647

 Minimalna vrijednost za int je: -2147483648


instagram story viewer