JavaRush /Blog Jawa /Random-JV /Jinis Data Referensi ing Jawa

Jinis Data Referensi ing Jawa

Diterbitake ing grup
Tanpa mangerteni sintaksis Jawa, ora mungkin dadi pangembang sing serius, mula saiki kita terus sinau sintaksis kasebut. Ing salah sawijining artikel sadurunge kita ngomong babagan variabel primitif, nanging amarga ana rong jinis variabel, dina iki kita bakal ngomong babagan jinis kapindho - jinis referensi ing Jawa. Dadi apa iku? Napa jinis data referensi dibutuhake ing basa Jawa? Jinis Data Referensi ing basa Jawa - 1Coba bayangake yen kita duwe obyek TV kanthi sawetara ciri, kayata nomer saluran, volume swara lan ing gendera:
public class TV {
   int numberOfChannel;
   int soundVolume;
   boolean isOn;
}
Kepiye jinis sing prasaja kaya , intnyimpen data iki? Ayo elinga: siji variabel intyaiku 4 bita. Nanging ing njero ana rong variabel (4 bait + 4 bait) saka jinis sing padha, lan uga boolean(+1 bait) ... Total - 4 nganti 9, nanging minangka aturan, luwih akeh informasi sing disimpen ing obyek. Apa sing kudu ditindakake? Sampeyan ora bisa nyelehake obyek menyang variabel. Ing titik iki ing crita kita, variabel referensi katon. Variabel referensi nyimpen alamat lokasi memori ing ngendi obyek tartamtu dumunung. Yaiku, iki minangka "kertu bisnis" kanthi alamat, sing bisa nemokake obyek ing memori sing dienggo bareng lan nindakake sawetara manipulasi. Referensi kanggo obyek apa wae ing Jawa minangka variabel referensi. Iki bakal katon kaya obyek TV kita:
TV telly = new TV();
Kita nyetel variabel jinis TV kanthi jeneng tellymenyang link menyang obyek sing digawe saka jinis TV. Sing, JVM allocates memori ing numpuk kanggo obyek TV, nggawe lan alamat kanggo lokasi ing memori, sijine ing variabel telly, kang disimpen ing tumpukan. Sampeyan bisa maca liyane babagan memori, yaiku tumpukan lan akeh informasi migunani liyane, ing kuliah iki . Variabel saka jinis TV lan obyek saka jinis TV, apa sampeyan sok dong mirsani? Iki ora tanpa alasan: obyek saka jinis tartamtu kudu duwe variabel sing cocog karo jinis sing padha (ora ngetung warisan lan implementasi antarmuka, nanging saiki kita ora nganggep iki). Sawise kabeh, kita ora bakal pour sup menyang gelas, ta? Pranyata obyek kita TV, lan variabel referensi kanggo iku kaya panel kontrol. Nggunakake remot kontrol iki kita bisa sesambungan karo obyek lan data. Contone, setel karakteristik kanggo TV kita:
telly.isOn = true;
telly.numberOfChannel = 53;
telly.soundVolume = 20;
Ing kene kita nggunakake operator titik .kanggo ngakses lan miwiti nggunakake unsur internal obyek sing dirujuk dening variabel kasebut. Contone, ing baris pisanan kita ngandhani variabel telly: "Wenehana variabel internal isOnsaka obyek sing sampeyan rujuk lan setel dadi bener" (uripake TV kanggo kita).

Redefining variabel referensi

Ayo kita duwe rong variabel saka jinis referensi lan obyek sing dirujuk:
TV firstTV = new TV();
TV secondTV = new TV();
Yen kita nulis:
firstTV = secondTV;
Iki tegese kita nemtokake variabel pisanan minangka nilai salinan alamat (nilai bit alamat) menyang obyek liya, lan saiki loro variabel kasebut nuduhake obyek liya (kanthi tembung liya, loro remot kontrol sing padha. TV). Ing wektu sing padha, obyek pisanan ditinggalake tanpa variabel sing nuduhake. Akibaté, kita duwe obyek sing ora bisa diakses, amarga variabel kasebut minangka benang kondisional, tanpa dadi sampah, mung ana ing memori lan njupuk papan. Objek iki bakal dirusak saka memori dening tukang sampah . Jinis Data Referensi ing basa Jawa - 2Sampeyan bisa ngilangi utas sing nyambungake karo obyek tanpa link liyane:
secondTV = null;
Akibaté, mung bakal ana siji pranala menyang obyek - firstTV, lan secondTVora bakal nuding sapa wae (sing ora nyegah kita menehi link menyang sawetara obyek kaya TV ing mangsa ngarep).

Kelas string

Kapisah, aku pengin sebutno kelas String . Iki minangka kelas dhasar sing dirancang kanggo nyimpen lan nggarap data sing disimpen minangka senar. Tuladha:
String text = new String("This TV is very loud");
Ing kene kita wis ngliwati senar kanggo disimpen ing konstruktor obyek. Nanging ora ana sing nglakoni. Sawise kabeh, strings bisa digawe:
String text = "This TV is very loud";
Luwih trep, ta? Ing babagan popularitas panggunaan, Stringora kalah karo jinis primitif, nanging isih ana kelas, lan variabel sing nuduhake dudu jinis primitif, nanging jinis referensi. Kita Stringduwe kemampuan sing apik kanggo nggabungake senar:
String text = "This TV" + " is very loud";
Akibaté, kita bakal njaluk teks maneh: This TV is very loud, wiwit loro baris bakal digabungake dadi siji kabèh, lan variabel bakal nuduhake teks lengkap iki. Nuansa penting yaiku Stringiki minangka kelas sing ora bisa diganti. Iki artine apa? Ayo njupuk conto iki:
String text = "This TV";
text = text + " is very loud";
Iku misale jek sing kabeh iku prasaja: kita ngumumake variabel, menehi nilai. Ing baris sabanjure kita ngganti. Nanging kita ora ngganti tenan. Wiwit iki kelas immutable, ing baris kapindho Nilai dhisikan ora diganti, nanging anyar digawe, kang siji kasusun saka pisanan + " is very loud".

Konstanta referensi

Ing artikel babagan jinis primitif, kita ndemek topik konstanta. Kepiye variabel referensi bakal ditindakake nalika kita ngumumake final ?
final TV telly = new TV();
Sampeyan bisa uga mikir yen iki bakal nggawe obyek ora bisa diganti. Nanging ora, iku ora bener. Jinis Data Referensi ing basa Jawa - 3Variabel referensi karo modifier finalbakal kaiket menyang obyek tartamtu tanpa kemampuan kanggo unbind ing sembarang cara (redefine utawa equate menyang null). Yaiku, sawise nyetel nilai variabel kasebut, kode kaya:
telly = new TV();
utawa
telly = null;
bakal nyebabake kesalahan kompilasi. Tegese, finalmung tumindak ing link, lan ora ana pengaruh ing obyek kasebut. Yen wiwitane bisa diganti, kita bisa ngganti kahanan internal tanpa masalah:
telly.soundVolume = 30;
Kadhangkala, variabel ditetepake minangka final sanajan ing argumen metode!
public void enableTV (final TV telly){
   telly.isOn = true;
}
Iki ditindakake supaya sajrone proses nulis metode, argumentasi kasebut ora bisa ditindhes lan, kanthi mangkono, nggawe kurang kebingungan. Apa yen kita nyatakake finalvariabel referensi sing nuduhake obyek sing ora bisa diganti? contone String:
final String PASSWORD = "password";
Akibaté, kita bakal entuk pancet, analog saka konstanta jinis primitif, amarga ing kene kita ora bisa redefine referensi utawa ngganti negara internal obyek (data internal).

Ayo padha nyimpulake

  1. Nalika variabel prasaja nyimpen bit nilai, variabel referensi nyimpen bit sing makili carane obyek dijupuk.
  2. Referensi obyek diumumake mung kanggo siji jinis obyek.
  3. Sembarang kelas ing Jawa minangka jinis referensi.
  4. Nilai standar saka variabel referensi ing Jawa yaiku null.
  5. Stringminangka conto standar saka jinis referensi. Kelas iki uga ora bisa diganti.
  6. Variabel referensi kanthi modifier finalkaiket mung siji obyek tanpa kamungkinan redefinisi.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION