Mitä eroa on lopullisella ja staattisella Javalla?


Paras vastaus

No, ne ovat täysin erilaisia ​​käsitteitä.

Staattiseksi merkitty jäsen kuuluu luokkaan, eikä mihinkään tiettyyn esiintymään. Joskus luokilla voi olla vain staattisia jäseniä, ja ilmeinen esimerkki on java.lang.Double-luokka, joka ”boxi” kaksinkertaiset primitiivit: saatat saada yksittäisen kaksinkertaisen arvon ilmentymämenetelmän avulla (myDouble.doubleValue()), mutta hanki ”yleismaailmallisia” asioita staattisten jäsenten kautta (Double.MAX\_VALUE).

Lopulliseksi merkityllä jäsenellä ei voi olla arvoa (mikä on sen arvo) jos primitiivinen, tai sen viite jos objekti) muuttui alustuksen jälkeen. Voit silti pystyä muuttamaan objektin ominaisuuksia (se voi olla muutettava ) mutta et voinut * korvata objektia toisella. (* Voit teknisesti ”huijata” pohdinnalla, tavukoodin käsittelyllä tai muilla tavoilla ”rikkoa sääntöjä”, mutta jos teet niitä, olet todennäköisesti tuntenut sinut ”huijaaminen”.)

Vastaa

Tietää, milloin käyttää

private static final X x;

Sinun pitäisi tietää, mikä on näiden avainsanojen käyttö.

Katsotaan

  1. yksityinen – Sitä käytetään, kun haluat rajoittaa tietyn luokan jäsenen koskemaan olla pääsemättä kyseisen luokan ulkopuolelle.
  2. staattinen – Kun julistat jäsenen staattiseksi, se on linkitetty luokkaansa eikä esineeseen. Sen yksinkertaistamiseksi staattinen jäsen alustetaan, kun luokka ladataan. Joten aina kun päivität kyseisen jäsenen arvoa, myös kaikki paikat, joihin se viittaa, päivitetään. Staattista jäsentä käytetään siis luokan nimellä, eikä heidän esineitä, koska jäsenen arvo pysyy samana objekteista riippumatta.
  3. lopullinen – Tämä avainsana, kun sitä käytetään jäsenmuuttujien kanssa, määrittää, että kun luokka ladataan ja arvo on määritetty, sitä ei voi muuttaa.

Katsotaan siis, mitä tapahtuu kun ilmoitat alla olevan kaltaisen muuttujan:

private static final String PRIVATE\_STATIC\_FINAL\_STRING = "String";

Nyt

PRIVATE\_STATIC\_FINAL\_STRING määritetään yksityiseksi, joten se voitti ”t ole käytettävissä sen ulkopuolella” ilmoittaja luokka. Se on määritelty myös staattiseksi, joten sen arvo pysyy samana riippumatta sen luokan esineistä. Ja se määritellään lopullisiksi, joten kun luokka ladataan, sen arvoa ei muuteta.

Näin ollen PRIVATE\_STATIC\_FINAL\_STRING toimii muokkaamattomana luokkatason merkkijonona, johon ei voida päästä sen ilmoittajaluokan ulkopuolella.

Toivon, että tämä auttaa sinua selvittämään epäilyt. Jos tarvitset lisäapua, voit ottaa yhteyttä minuun ja yritän auttaa sinua niin paljon kuin pystyn.

Onnea ja onnellista oppimista!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *