O’zgarmas – bu nomidan ham ma’lumki, qiymati o’zgarmaydigan element. Java dasturlash tilida boshqa tillardagi kabi “const” kalit so’zi mavjud emas, ya’ni o’zgarmaslarni e’lon qilish uchun static va final kalit so’zlaridan foydalaniladi. Shuningdek, standartga ko’ra o’zgarmas nomi faqat katta harflardan iborat bo’lishi kerak. Agar o’zgarmas nomi bir nechta so’zlardan iborat bo’lsa, har bir so’z tag-chiziq (_) bilan ajratiladi.
Static va final modifikatorlari
static modifikatorining maqsadi xotirani boshqarish hisoblanadi. Shuningdek uning maqsadi sinf (class) e’lon qilinganidan keyin obyekt yaratmasdan o’zgaruvchiga murojaat qilish hisoblanadi.
final modifikatorining asosiy maqsadi o’zgaruvchining qiymatini o’zgarmas qilish. U shuningdek sodda ma’lumot turidagi o’zgaruvchini ham o’zgarmas qila oladi.
Sintaksisi:
static final malumotturi ozgaruvchiNomi = qiymat;
Misol:
static final String BLOG = “blogpost.uz”;
static final int MAX_MAQOLALAR_SONI = 20;
Shu yerda savol tug’iladi, nega o’zgarmas static va final kalit so’zlarining ikkalasi bilan ifodalanadi?
Agar o’zgarmas faqat static kalit so'zi bilan ifodalansa, sinf(class)ning barcha obyektlari o’sha o’zgarmasga murojaat qiladi ya’ni xotiradan faqat bitta joy band bo’ladi va har bir obyekt o’sha xotira maydoniga, ammo uning qiymati o’zgaruvchan bo’ladi. Buning oldini olish uchun final kalit so'zidan foydalanish zarur.
Agar o’zgarmas faqat final kalit so'zi bilan ifodalansa, sinf(class)ning har bir obyekti uchun bitta o’zgarmasning turli nusxalari yaratiladi, bu esa talabga javob bermaydi.
O’zgarmaslar nega kerak?
Dasturlashda o’zgarmaslardan foydalanish kodni oson va tushunarli shaklga keltiradi. Masalan, bizda biror o’zgarmas qiymat ya’ni bank kartasi raqami yoki ma’lumotlar bazasi nomi mavjud bo’lsin. Agar uni har safar zarur joyda qiymatini yuklash orqali foydalansak, birinchidan u qiymatni nima ekanligi tushunarsiz bo’ladi. O’zgarmasda esa uning nomi mavjud bo’ladi. Shuningdek, u qiymat bir emas bir nechta joyda foydalanilishi mumkin. Demak, uni har doim izlash shart bo’lmaydi.
Shuningdek, o’zgarmaslar kodning samaradorligini oshiradi, chunki ular ham JVM (Java Virtual Machine) ham dastur tomonidan keshlanadi.
O'zgarmaslarga misollar:
final byte VAR1 = 2;
final short VAR2;
VAR2 = -22;
final int VAR3 = 100;
final long VAR4;
VAR4 = -199232324512973;
final float VAR5 = 21.23f;
final double VAR6;
VAR6 = -11223.2768922;
final boolean VAR7 = true;
final char VAR8 = 'e';
// Barcha o'zgarmaslarni chop etamiz
System.out.println("var1 : "+VAR1);
System.out.println("var2 : "+VAR2);
System.out.println("var3 : "+VAR3);
System.out.println("var4 : "+VAR4);
System.out.println("var5 : "+VAR5);
System.out.println("var6 : "+VAR6);
System.out.println("var7 : "+VAR7);
System.out.println("var8 : "+VAR8);