Hello, Amigo! Saya ingin memberitahu anda tentang struktur dalaman pembolehubah. Seperti yang anda sedia maklum, setiap pembolehubah dikaitkan dengan kawasan memori di mana nilainya disimpan. "

"Ya. Kali terakhir awak beritahu saya tentang perkara itu."

"Bagus. Bagus awak ingat. Saya sambung, kalau begitu."

"Semua jenis komposit terdiri daripada yang lebih ringkas. Dan mereka pula, terdiri daripada yang lebih mudah. ​​Sehingga, akhirnya, kita berakhir dengan jenis primitif , yang tidak boleh dipermudahkan lagi. Itulah yang dipanggil – jenis primitif . Untuk contoh, int ialah jenis primitif, tetapi String ialah jenis komposit yang menyimpan datanya sebagai jadual aksara (di mana setiap aksara ialah jenis primitif char )."

"Sangat menarik. Teruskan."

"Jenis komposit dibentuk dengan mengumpulkan yang mudah. ​​Kami memanggil jenis seperti itu kelas . Apabila kami mentakrifkan kelas baharu dalam atur cara, kami mengisytiharkan jenis data komposit baharu . Datanya akan sama ada jenis komposit lain atau jenis primitif."

kod Java Penerangan
public class Person
{
   String name;
   int age;
}
Jenis komposit baharu diisytiharkan – Person.
Datanya disimpan dalam Stringpembolehubah (jenis komposit) namedan intpembolehubah (jenis primitif).age
public class Rectangle
{
   int x, y, width, height;
}
Jenis komposit baharu diisytiharkan – Rectangle.
Ia terdiri daripada empat intpembolehubah (jenis primitif).
public class Cat
{
   Person owner;
   Rectangle territory;
   int age;
   String name;
}
Jenis komposit baharu diisytiharkan – Cat. Ia mempunyai pembolehubah berikut:
owner, jenis komposit Person
territory, jenis komposit Rectangle
age, jenis primitif int
name, jenis kompositString

"Buat masa ini, segala-galanya jelas, walau bagaimana pun ia kelihatan pelik."

"Jenis besar (komposit) mengandungi banyak jenis kecil (primitif). Itulah sebabnya objek jenis ini mengambil banyak memori - lebih daripada pembolehubah jenis primitif. Kadang-kadang lebih banyak lagi. Melaksanakan operasi penugasan dengan pembolehubah sedemikian digunakan untuk mengambil masa yang lama masa dan memerlukan penyalinan bahagian memori yang besar. Itulah sebabnya pembolehubah jenis komposit tidak menyimpan objek itu sendiri, sebaliknya hanya rujukan kepadanya, iaitu alamat empat baitnya. Ini sudah cukup untuk menangani data dalam objek tersebut. Mesin Java mengendalikan semua kerumitan yang berkaitan."

"Saya tidak faham semua itu."

"Kami sebelum ini telah mengatakan bahawa pembolehubah adalah seperti kotak. Jika anda ingin menyimpan nombor 13 di dalamnya, anda boleh menulis 13 pada sekeping kertas dan memasukkannya ke dalam kotak."

"Tetapi bayangkan anda perlu menyimpan sesuatu yang lebih besar di dalam kotak (pembolehubah). Contohnya, anjing, kereta atau jiran anda. Daripada cuba menolak yang tidak boleh ditolak ke dalam kotak, anda boleh melakukan sesuatu yang lebih mudah: gunakan foto daripada anjing bukannya anjing sebenar, plat lesen bukannya kereta sebenar, atau nombor telefon jiran anda bukannya jiran anda."

"Kita ambil sehelai kertas dan catatkan nombor telefon jiran. Ini seperti rujukan kepada objek. Jika kita salin kertas yang tertera nombor telefon jiran dan letak dalam beberapa kotak, kini lebih banyak rujukan. kepada jiran anda. Tetapi, seperti sebelum ini, anda masih mempunyai hanya seorang jiran. Itu masuk akal, bukan?"

"Ciri penting untuk menyimpan data dengan cara ini ialah anda boleh mempunyai banyak rujukan kepada satu objek "

"Sungguh menarik! Saya hampir mendapatnya. Tolong beritahu saya sekali lagi – apakah yang akan berlaku jika saya menetapkan pembolehubah jenis komposit kepada pembolehubah lain daripada jenis komposit yang sama?"

"Kemudian kedua-dua pembolehubah akan menyimpan alamat yang sama. Ini bermakna jika anda menukar data objek yang dirujuk oleh satu pembolehubah, anda menukar data yang dirujuk oleh yang lain . Kedua-dua pembolehubah merujuk objek yang sama . Sudah tentu, mungkin terdapat banyak pembolehubah lain yang juga menyimpan rujukan kepadanya."

"Apakah yang boleh dilakukan oleh pembolehubah jenis komposit (rujukan/kelas) jika mereka tidak memegang rujukan kepada objek? Adakah itu mungkin?"

"Ya, Amigo. Anda mendahului saya dengan soalan anda. Itu mungkin. Jika pembolehubah jenis rujukan (komposit) tidak menyimpan rujukan kepada objek, maka ia menyimpan apa yang dikenali sebagai 'null reference'. Pada asasnya, ini bermakna ia merujuk objek yang alamatnya 0. Walau bagaimanapun, mesin Java tidak pernah mencipta objek dengan alamat ini, jadi ia sentiasa mengetahui bahawa jika pembolehubah rujukan mengandungi 0, maka ia tidak menunjuk ke mana-mana objek ."

kod Java Penerangan
String s;
String s = null;
Pernyataan yang setara.
Person person;
person = new Person();
person = null;
Kami mencipta pembolehubah orang yang nilainya nol.
Kami memberikan kepadanya alamat objek Orang yang baru dibuat.
Kami menetapkan null kepada pembolehubah.
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name = "God";
Kami mencipta objek Cat dan menyimpan alamatnya dalam kucing berubah; kucing.pemilik sama dengan null.
Kami menetapkan cat.owner sama dengan alamat objek Orang yang baru dibuat.
cat.owner.name masih sama dengan null.
Kami menetapkan cat.owner.name sama dengan "Tuhan"

"Adakah saya memahami anda dengan betul? Pembolehubah dibahagikan kepada dua jenis: jenis primitif dan jenis rujukan. Jenis primitif menyimpan nilai secara langsung, manakala jenis rujukan menyimpan rujukan kepada objek. Jenis primitif termasuk int, char, boolean dan banyak lagi. Rujukan jenis termasuk semua yang lain. Kami menggunakan kelas untuk menciptanya."

"Kau betul sekali, anakku."

"Jadi, anda kata anda telah memahami segala-galanya. Berikut ialah beberapa tugasan untuk membantu anda mengukuhkan pengetahuan anda."