JavaRush /Java Blog /Random-TK /Java-da maglumat maglumatlarynyň görnüşleri

Java-da maglumat maglumatlarynyň görnüşleri

Toparda çap edildi
Java sintaksisine düşünmän, çynlakaý dörediji bolmak mümkin däl, şonuň üçin bu gün sintaksis öwrenmegi dowam etdirýäris. Öňki makalalaryň birinde başlangyç üýtgeýjiler hakda gürleşipdik, ýöne üýtgeýänleriň iki görnüşi bolansoň, bu gün ikinji görnüş - Java-da salgylanma görnüşleri barada gürleşeris. Onda näme? Java-da maglumat maglumat görnüşleri näme üçin zerur? Java-da maglumat maglumatlarynyň görnüşleri - 1Kanal belgisi, ses göwrümi we baýdak ýaly käbir aýratynlyklary bolan telewizion obýektimiziň bardygyny göz öňüne getireliň:
public class TV {
   int numberOfChannel;
   int soundVolume;
   boolean isOn;
}
Simpleönekeý görnüş intbu maglumatlary nädip saklap biler? Rememberatda saklaň: bir üýtgeýji int4 baýt. Insideöne içinde şol bir görnüşdäki iki üýtgeýji (4 baýt + 4 baýt), şeýle hem boolean(+1 baýt) bar ... Jemi - 4-den 9-a çenli, ýöne adatça, bir obýektde has köp maglumat saklanýar. Näme etmeli? Bir obýekti üýtgeýjä goýup bilmersiňiz. Hekaýamyzyň bu nokadynda salgylanma üýtgeýjileri peýda bolýar. Salgy üýtgeýjileri belli bir obýektiň ýerleşýän ýadynyň salgysyny saklaýar. Thisagny, bu salgymyzy “wizit kartoçka” bolup, obýektimizi umumy ýatda tapyp we onuň bilen käbir manipulýasiýa edip bileris. Java-daky islendik obýekte salgylanma üýtgeýjidir. Teleýaýlym obýektimiz bilen nähili boljakdygy:
TV telly = new TV();
tellyTelewizoryň döredilen obýektine baglanyşyk üçin ady bolan görnüşli telewizoryň üýtgeýjisini goýduk. Jagny, JVM telewizor obýekti üçin üýşmek üçin ýady bölýär, ony döredýär we adresini ýatda saklaýar, tellybukjada saklanýan üýtgeýjä goýýar. Bu leksiýada ýat hakda has köp okap bilersiňiz, ýagny stack we başga-da köp peýdaly maglumatlar . Telewizoryň üýtgeýän görnüşi we telewizoryň görnüşi, üns berdiňizmi? Munuň sebäbi ýok: belli bir görnüşdäki obýektleriň şol bir görnüşdäki degişli üýtgeýjileri bolmaly (miras we interfeýs amallaryny hasaba alman, ýöne indi muny göz öňünde tutmaýarys). Galyberse-de, äýnege çorba guýjak däl, şeýlemi? Görnüşi ýaly, obýektimiz telewizor, onuň üçin salgylanma üýtgeýjisi dolandyryş paneline meňzeýär. Bu uzakdan dolandyrmak arkaly obýektimiz we onuň maglumatlary bilen täsirleşip bileris. Mysal üçin, telewizorymyzyň aýratynlyklaryny düzüň:
telly.isOn = true;
telly.numberOfChannel = 53;
telly.soundVolume = 20;
.Bu ýerde üýtgeýjiniň görkezýän obýektiniň içki elementlerine girmek we ulanyp başlamak üçin nokat operatory ulandyk . Mysal üçin, birinji setirde üýtgeýjini aýtdyk : “ salgylanýan obýektiň tellyiçerki üýtgeýjisini bize beriň we hakykata öwüriň” (biziň üçin telewizory açyň).isOn

Salgy üýtgeýjilerini kesgitlemek

Salgy görnüşiniň we olaryň görkezýän obýektleriniň iki üýtgeýjisi bar diýeliň:
TV firstTV = new TV();
TV secondTV = new TV();
Writeazsak:
firstTV = secondTV;
bu, birinji üýtgeýjini salgynyň göçürmesiniň (salgy salgysynyň bahasy) ikinji obýekte baha hökmünde belländigimizi, indi iki üýtgeýjiniň ikinji obýekte degişlidigini (başgaça aýdylanda, birmeňzeş iki sany uzakdan dolandyrmagyň) Telewizor). Şol bir wagtyň özünde, ilkinji obýekt oňa degişli üýtgeýjisiz galdy. Netijede, girip bolmaýan bir obýektimiz bar, sebäbi üýtgeýji oňa şeýle şertli sapak bolupdy, onsuz hapa öwrülýär, diňe ýatda galýar we ýer tutýar. Bu obýekt soňundan hapa ýygnaýjy tarapyndan ýatdan çykarylar . Java-da maglumat maglumatlarynyň görnüşleri - 2Başga bir baglanyşyksyz obýekt bilen birleşdiriji sapagy döwüp bilersiňiz:
secondTV = null;
Netijede, obýekte diňe bir baglanyşyk bolar - firstTVwe secondTVmundan beýläk hiç kime görkezmez (bu geljekde telewizor ýaly käbir obýektlere baglanyşyk bellemegimize päsgel bermez).

Setir synpy

Aýry-aýrylykda, String synpyny ýatlamak isleýärin . Bu setir hökmünde saklanýan maglumatlary saklamak we işlemek üçin döredilen esasy synpdyr. Mysal:
String text = new String("This TV is very loud");
Bu ýerde obýektiň konstruktorynda saklanjak bir setir geçdik. Emma hiç kim muny etmeýär. Galyberse-de, setirler döredilip bilner:
String text = "This TV is very loud";
Has amatly, şeýlemi? Ulanyşyň meşhurlygy nukdaýnazaryndan, Stringol başlangyç görnüşlerden pes däl, ýöne ol henizem synp bolup durýar we oňa salgylanýan üýtgeýji başlangyç görnüş däl-de, salgylanma görnüşidir. StringSetirleri birleşdirmek üçin bu ajaýyp ukybymyz bar :
String text = "This TV" + " is very loud";
Netijede, teksti ýene alarys: This TV is very loudsebäbi iki setir bir bitewi birleşer we üýtgeýji bu doly tekste salgylanar. Möhüm nuans, Stringbu üýtgewsiz synp. Bu näme many berýär? Geliň, mysal alalyň:
String text = "This TV";
text = text + " is very loud";
Everythinghli zat ýönekeý ýaly: üýtgeýjini yglan edýäris, oňa baha berýäris. Indiki setirde ony üýtgedýäris. Emma hakykatdanam üýtgemeýäris. Bu üýtgewsiz synp bolansoň, ikinji setirde başlangyç bahasy üýtgedilmän, täze bir döredilýär, bu bolsa öz gezeginde birinjiden durýar + " is very loud".

Salgy yzygiderliligi

Ilkinji görnüşler baradaky makalada yzygiderli mowzuk barada durup geçdik. Salgy üýtgeýjisi gutarnykly diýip yglan edenimizde özüni nähili alyp barar ?
final TV telly = new TV();
Munuň obýekti üýtgemez diýip pikir edip bilersiňiz. Nook, bu dogry däl. Java-da maglumat maglumatlarynyň görnüşleri - 3Üýtgediji bilen salgylanma üýtgeýjisi, finalhaýsydyr bir usul bilen açmak mümkinçiliginden mahrum bolar (ony täzeden kesgitläň ýa-da deňleşdiriň null). Suchagny, şeýle üýtgeýjiniň bahasyny kesgitlänsoň, aşakdaky ýaly kod:
telly = new TV();
ýa-da
telly = null;
düzmek ýalňyşlygyna sebäp bolar. Onlyagny, finaldiňe baglanyşykda hereket edýär we obýektiň özüne täsir etmeýär. Ilki bilen üýtgäp bilýän bolsak, içerki ýagdaýyny hiç hili kynçylyksyz üýtgedip bileris:
telly.soundVolume = 30;
Käwagt üýtgeýjiler hatda usul argumentlerinde-de gutarnykly diýilýär!
public void enableTV (final TV telly){
   telly.isOn = true;
}
Bu usul ýazylanda, bu argumentleri ýok edip bolmaz we şoňa görä-de az bulaşyklyk döreder ýaly edilýär. finalÜýtgemeýän bir zady aňladýan salgylanma üýtgeýjisini görkezsek näme etmeli ? Mysal üçin String:
final String PASSWORD = "password";
Netijede, hemişelik, adaty görnüşdäki yzygiderliligiň meňzeşini alarys, sebäbi bu ýerde ne salgylanmany täzeden kesgitläp bilmeris, ne-de obýektiň içki ýagdaýyny üýtgedip bilmeris (içerki maglumatlar).

Geliň, jemläliň

  1. Simpleönekeý üýtgeýjiler baha bitlerini saklaýan bolsa, salgy üýtgeýjiler obýektiň nädip alynýandygyny görkezýän bitleri saklaýar.
  2. Obýekt salgylanmalary obýektiň diňe bir görnüşi üçin yglan edilýär.
  3. Java-daky islendik synp salgylanma görnüşidir.
  4. Java-da islendik salgy üýtgeýjisiniň deslapky bahasy null.
  5. Stringsalgylanma görnüşiniň adaty mysalydyr. Bu synp hem üýtgewsizdir.
  6. Üýtgediji bilen salgylanma üýtgeýjileri finalgaýtadan kesgitlemek mümkinçiligi bolmazdan diňe bir obýekte baglydyr.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION