Hello, Amigo! Aku arep ngomong babagan struktur internal variabel. Kaya sing wis dingerteni, saben variabel digandhengake karo area memori ing ngendi nilai kasebut disimpen. "

"Ya, sampeyan wis ngomong babagan sing pungkasan."

"Apik. Iku apik yen sampeyan kelingan. Aku bakal nerusake, banjur."

"Kabeh jinis komposit kasusun saka sing luwih prasaja. Lan padha, ing gilirane, kalebu sing luwih prasaja. Nganti, pungkasane, kita mungkasi karo jinis primitif , sing ora bisa luwih disederhanakake. Sing diarani - jinis primitif . Kanggo contone, int minangka jinis primitif, nanging String minangka jinis komposit sing nyimpen data minangka tabel karakter (ing saben karakter minangka jinis primitif char ).

"Menarik banget. Terus."

"Jinis komposit dibentuk kanthi nglompokake sing prasaja. Kita nyebat kelas jinis kasebut . Nalika kita nemtokake kelas anyar ing program, kita ngumumake jinis data komposit anyar . Data kasebut bakal dadi jinis komposit utawa jinis primitif liyane."

kode Jawa Katrangan
public class Person
{
   String name;
   int age;
}
Jinis komposit anyar diumumake - Person.
Data kasebut disimpen ing Stringvariabel (jinis komposit) namelan intvariabel (jinis primitif).age
public class Rectangle
{
   int x, y, width, height;
}
Jinis komposit anyar diumumake - Rectangle.
Iku kasusun saka papat int(jinis primitif) variabel.
public class Cat
{
   Person owner;
   Rectangle territory;
   int age;
   String name;
}
Jinis komposit anyar diumumake - Cat. Nduwe variabel ing ngisor iki:
owner, jinis komposit Person
territory, jinis komposit Rectangle
age, jinis primitif int
name, jinis kompositString

"Saiki, kabeh wis jelas, nanging katon aneh."

"Jinis gedhe (komposit) ngemot akeh jinis cilik (primitif). Pramila obyek saka jinis iki njupuk akeh memori - luwih saka variabel saka jinis primitif. Kadhangkala luwih akeh. Nindakake operasi assignment karo variabel kuwi digunakake kanggo njupuk dawa. wektu lan dibutuhake Nyalin bagean gedhe saka memori.Mulane variabel saka jinis gabungan ora nyimpen obyek dhewe, nanging mung referensi kanggo iku, IE alamat papat-bait. Iki cukup kanggo alamat data ing obyek kuwi. Mesin Java nangani kabeh kerumitan sing ana gandhengane."

"Aku ora ngerti apa-apa."

"Sadurungé kita wis ngomong sing variabel kaya kothak. Yen sampeyan pengin nyimpen nomer 13 ing, sampeyan bisa nulis 13 ing Piece saka kertas lan sijine menyang kothak."

"Nanging mbayangno yen sampeyan kudu nyimpen barang sing luwih gedhe ing kothak (variabel). Contone, asu, mobil, utawa pepadhamu. Tinimbang nyoba nyurung sing ora bisa didorong menyang kothak, sampeyan bisa nindakake luwih gampang: nggunakake foto. saka asu tinimbang asu nyata, plat nomer tinimbang mobil asli, utawa nomer telpon pepadhamu tinimbang pepadhamu."

"We njupuk selembar kertas lan nulis nomer telpon pepadhamu. Iki minangka referensi kanggo obyek. Yen kita nyalin kertas sing ana nomer telpon tanggane lan dilebokake ing pirang-pirang kothak, saiki luwih akeh referensi. marang pepadhamu. Nanging kaya dhek biyen, kowe isih duwe pepadhamu mung siji. Mangkono, ta?"

"Fitur penting kanggo nyimpen data kanthi cara iki yaiku sampeyan bisa duwe akeh referensi menyang obyek siji "

"Carane menarik! Aku wis meh entuk. Kandhanana sepisan maneh, mangga - apa sing bakal kelakon yen aku nemtokake variabel saka jinis komposit menyang variabel liyane saka jinis komposit sing padha?"

"Banjur loro variabel bakal nyimpen alamat sing padha. Tegese yen sampeyan ngganti data obyek sing dirujuk dening siji variabel, sampeyan ngganti data sing dirujuk dening liyane . Loro-lorone variabel kasebut ngrujuk obyek sing padha . variabel liyane sing uga nyimpen referensi kasebut."

"Apa sing ditindakake dening variabel komposit (referensi / kelas) yen ora duwe referensi kanggo obyek? Apa bisa uga?"

"Ya, Amigo. Sampeyan bakal ndhisiki pitakonan sampeyan. Iku bisa uga. Yen variabel saka jinis referensi (komposit) ora nyimpen referensi kanggo obyek, banjur nyimpen apa sing dikenal minangka 'null. referensi'. Sejatine, iki tegese referensi obyek sing alamate 0. Nanging, mesin Java ora tau nggawe obyek nganggo alamat iki, mula mesthi ngerti yen variabel referensi ngemot 0, mula ora nuduhake obyek apa wae. ."

kode Jawa Katrangan
String s;
String s = null;
Pernyataan sing padha.
Person person;
person = new Person();
person = null;
Kita nggawe variabel wong sing nilaine null.
Kita nemtokake alamat obyek Person sing mentas digawe.
Kita nemtokake null menyang variabel.
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name = "God";
Kita nggawe obyek Cat lan nyimpen alamat ing kucing variabel; kucing.pemilik padha null.
We nyetel cat.owner witjaksono menyang alamat obyek Person mentas digawe.
cat.owner.name isih padha null.
Kita nyetel cat.owner.name padha karo "Gusti Allah"

"Apa aku ngerti sampeyan kanthi bener? Variabel dipérang dadi rong jinis: jinis primitif lan jinis referensi. Jinis primitif nyimpen nilai langsung, nalika jinis referensi nyimpen referensi menyang obyek. Jinis primitif kalebu int, char, boolean, lan liya-liyane. Referensi jinis kalebu kabeh liyane. Kita nggunakake kelas kanggo nggawe. "

"Sampeyan pancen bener, anakku."

"Dadi, sampeyan ngomong sampeyan wis ngerti kabeh. Kene sawetara tugas kanggo mbantu sampeyan nguatake kawruh."