Konstanta
"Amigo, tahukah Anda bahwa di Jawa tidak semua variabel dapat diubah?"
"Bagaimana, Kim? Memang, kata 'variabel' berbicara tentang perubahan."
"Tidak diragukan lagi. Seperti banyak bahasa pemrograman lainnya, Java memiliki konstanta , yaitu variabel yang nilainya tidak dapat diubah . Dan kata 'konstanta' berbicara tentang keteguhan."
"Dan untuk apa mereka?"
"Biasanya, mereka digunakan untuk beberapa hal mendasar seperti jumlah Pi
atau jumlah hari dalam bulan dalam setahun. Yang mengatakan, pada prinsipnya, seorang programmer dapat membuat variabel apa pun menjadi konstanta, jika dia memutuskan bahwa melakukan jadi perlu."
"Maksudmu seperti nama, warna mobil, atau nama hari dalam seminggu?"
"Kamu punya ide yang tepat. Apa pun yang tidak boleh diubah."
"Dan seperti apa konstanta ini di Jawa?"
"Java memiliki kata kunci khusus untuk mereka: final
. Membuat variabel yang tidak dapat diubah terlihat sama dengan membuat variabel biasa. Satu-satunya perbedaan adalah sebelum tipe variabel Anda perlu menulis kata final
, seperti ini:
final Type name = value;
"Apa yang terjadi jika Anda membuat sebuah konstanta dan kemudian mencoba memberikan nilai yang berbeda padanya?"
"Itu adalah pertanyaan yang tepat untuk ditanyakan! Dan jawaban yang tepat adalah ini: jika Anda mencoba untuk menetapkan nilai yang berbeda ke sebuah final
variabel, maka program Anda tidak dapat dikompilasi."
"Bagaimana jika Anda mendeklarasikan final
variabel tetapi tidak memberikan nilai padanya?"
"Tidak ada gunanya melakukan ini, jadi itu juga tidak diperbolehkan di Jawa. Sebuah final
variabel harus diinisialisasi ketika dideklarasikan, yaitu, Anda harus memberikan nilai padanya. Ada satu pengecualian untuk aturan ini: Anda dapat memindahkan inisialisasi dari variabel kelas statis menjadi konstruktor, tetapi Anda akan mempelajarinya nanti.
"Yang mengatakan, tidak semua yang merupakan final
konstanta. Untuk mengurangi jumlah kata kunci, pengembang Java menggunakan kata final
untuk lebih dari sekedar mendeklarasikan konstanta. final
juga dapat diterapkan pada metode dan bahkan kelas. Metode yang dideklarasikan sebagai final
tidak dapat diganti, dan sebuah kelas dinyatakan final
tidak dapat diwariskan.”
"Uh... Diganti? Diwariskan? Bahasa apa yang kamu gunakan sekarang?"
"Bahasa pemrograman berorientasi objek. Anda akan segera memahaminya. Sampai saat itu, nikmati saja terminologi yang indah."
"Oke. Jadi, final
bisa diletakkan sebelum variabel, kelas, dan metode, dan kata kunci ini membuat mereka tidak dapat diubah dalam arti tertentu?"
"Ya. Selanjutnya, final
pengubah dapat ditambahkan sebelum variabel apa pun: variabel lokal, parameter metode, bidang kelas, dan variabel kelas statis.
"Inilah hal penting untuk diingat: final
sebelum nama variabel hanyalah perlindungan terhadap perubahan apa pun pada variabel itu . Jika variabel menyimpan referensi ke suatu objek, maka objek tersebut masih dapat diubah."
"Aku tidak begitu mengerti."
"Kamu akan segera mengerti. Ini contohnya:
|
Kami membuat array. Ini tidak diperbolehkan: variabel data dideklarasikan sebagai final . Tapi Anda bisa melakukan ini. Dan juga ini. |
"Mengerti. Itu rumit."
konstanta global
"Menurutmu apa itu konstanta global?"
"Saya kira konstanta global mungkin seperti variabel global, hanya konstanta?"
"Tepat. Jika Anda perlu mendeklarasikan konstanta global dalam program Anda, buat variabel kelas statis , dan buatlah public
dan final
. Ada gaya khusus untuk nama variabel tersebut: ditulis dengan huruf besar semua, dengan karakter garis bawah digunakan untuk kata-kata terpisah.
Contoh:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
Bayangan variabel
"Seperti yang saya katakan sebelumnya, Anda tidak dapat membuat banyak variabel lokal dengan nama yang sama dalam satu metode. Dalam metode yang berbeda, Anda bisa."
"Saya tahu itu!"
"Tapi apa yang Anda mungkin tidak tahu adalah bahwa variabel dalam kelas dan variabel lokal dalam metode mungkin memiliki nama yang sama.
Contoh:
Kode | Visibilitas variabel |
---|---|
|
|
"Dalam add
metode, kami mendeklarasikan variabel lokal bernama sum
. Sampai akhir metode, itu membayangi (atau menutupi ) sum
variabel instan."
"Hmm... menurutku ini adalah perilaku yang diharapkan."
“Tapi itu bukan akhir dari cerita. Ternyata jika sebuah variabel instan dibayangi oleh variabel lokal, masih ada cara untuk merujuk ke variabel instan di dalam metode. Kami melakukannya dengan menulis kata kunci sebelum this
namanya :
this.name
"Inilah contoh di mana konflik nama berhasil diselesaikan:
Kode | Visibilitas variabel |
---|---|
|
|
Variabel count
and sum
tersedia di mana saja dengan atau tanpa this
kata kunci. Pada baris di mana sum
variabel lokal membayangi sum
variabel instan, sum
variabel instan hanya dapat diakses menggunakan this
kata kunci.
"Jelas, aku harus berlatih ini."
"Kamu akan berhasil."
"Bagaimana jika variabel kelas statis dibayangi daripada hanya variabel instan (non-statis)? Anda tidak dapat mengaksesnya melalui this
?"
"Benar. Kata kunci ini tidak akan berfungsi. Anda harus merujuknya melalui nama kelas:
ClassName.name
Contoh:
Kode | Visibilitas variabel |
---|---|
|
|
"Perhatikan: Anda dapat mengakses dan count
variabel sum
statis di mana saja dengan atau tanpa menggunakan nama kelas Solution
sebagai awalan. Di baris di mana sum
variabel lokal membayangi sum
variabel instan, akses ke sum
variabel kelas hanya dimungkinkan bila digunakan Solution
sebagai awalan.
Variabel di dalam sebuah for
loop
"Dan satu lagi fakta kecil tapi menarik. Ada juga tempat di mana variabel dideklarasikan dengan cara khusus — yang saya bicarakan di dalam loop for
. " Biasanya, sebuah for
loop memiliki counter
variabel dalam tanda kurung. Dan apa yang akan menjadi visibilitas variabel ini? Lagi pula, itu tidak ada di dalam tubuh loop. Apakah ini seluruh metode? Atau tidak?"
"Saya sudah mendengar sesuatu tentang ini. Seperti yang saya pahami, variabel yang dideklarasikan di header loop for
hanya terlihat di badan loop dan di header loop for
. "
"Bagus, Amigo. Tapi tetap saja, lihat contoh untuk memperkuat bahan ini:
Kode | Visibilitas variabel |
---|---|
|
|
"Jadi Anda mengatakan bahwa dalam kode saya, saya dapat menulis beberapa loop satu demi satu dengan variabel penghitung dengan nama yang sama, dan tidak akan ada masalah?"
"Tidak akan ada masalah. Ini, lihat:
Kode | Visibilitas variabel |
---|---|
|
|