Odatda dasturlar turli sonli va boshqa tipdagi ma’lumotlarni qayta ishlash uchun yoziladi. Bitta dastur tarkibida uchraydigan ma’lumotlarni bir-biridan farqlash uchun nomlash lozim bo‘ladi va bunday nomlar identifikator deb ataladi. Identifikator muayyan bir vaqtda ifodalab turgan son yoki boshqa turdagi ma’lumot uning qiymati hisoblanadi. Dasturda qatnashgan har bir identifikator uchun kompyuter xotirasidan ma’lum bir joy ajratiladi hamda bu joyga uning qiymati yozib qo‘yiladi va saqlanadi. Identifikatorlar doim lotin harflari bilan boshlanadi. Ularni yozish uchun zarur bo‘lgan keyingi belgilar esa lotin harflari, raqamlar va "_" (tagiga chizish) belgisidan iborat bo‘lishi mumkin:
A, Yu, a8, asdr12k, ism, kitob, sahifalar_soni.
Dastlabki to‘rtta identifikator sintaktik jihatdan to‘g‘ri yozilgan, ammo identifikatorlarni bunday yozish katta hajmli dasturlarni ishlab chiqishda ma’lum bir qiyinchiliklarni tug‘dirishi mumkin. Chunki, ular o‘zlari ko‘rsatayotgan ma’lumotlarni to‘la va tushunarli qilib ifodalay olmaydi. Natijada bunday identifikatorlarni boshqasi bilan almashtirib yuborish ehtimolligi ortadi hamda ana shu dasturni o‘qish va tushunish qiyinlashib ketadi. Shuning uchun identifikatorlarni keyingi ikkitasi kabi belgilash maqsadga muvofiq hisoblanadi. Chunki ular o‘zlari ifodalayotgan o‘zgaruvchilarni ma’lum bir darajada izohlab turadi va shu bilan bog‘liq anglashilmovchiliklarga barham berishda muhim ahamiyat kasb etadi. Identifikator tanlaganda ma’lumotlarning shakli va mazmunini hisobga olish ham ana shunday omillardan biri hisoblanadi. Masalan, uchburchak haqidagi masalada ehtiyojga qarab a_tomon, b_tomon, d_tomon, yarim_perimetr, yuza, Atomon, Btomon, Dtomon, A_burchak, B_burchak, C_burchak, balandlik, mediana kabi identifikatorlar maqsadga muvofiq hisoblanadi. Identifikatorlarni yozishda Kotlin dasturlash tili kompilyatori katta va kichik harflarni bir-biridan farqlaydi, ya’ni yuza, Yuza, YUZA, YuZa kabi identifikatorlar turli xil deb qabul qiladi. Identifikator sifatida xizmatchi so‘zlar, turli tinish va munosabat belgilaridan foydalanib bo‘lmaydi. Shuning uchun ularni quyidagicha yozish noto‘g‘ri hisoblanadi:
2x, x-y, R=radius, !gamma, a?b, k$l, =son, +qiymat.
Eslab qoling, identifikator raqamdan boshlanishi mumkin emas. Demak, 12x identifikatorning nomi bo‘la olmas ekan. Garchi Kotlinda identifikatorning nomi sifatida kalit so‘zlarni ishlatib bo‘lmasada, ularning oldiga @ belgisini qo‘yish bilan, uni ham identifikatorning nomi sifatida kalit so‘zlarni ham ishlatish mumkin bo‘ladi. Masalan, @for identifikator hisoblanadi. Aslida bu holatda for identifikator hisoblanadi, @ belgisi esa hisobga olinmaydi. Istisno tarzida maxsus maqsadlar uchun zarur bo‘lmasa, kalit so‘zlarni boshlang‘ich @ belgisi bilan ishlatish tavsiya etilmaydi. Shuningdek, @ belgisini ixtiyoriy identifikator nomidan oldin qo‘yish mumkin, lekin uni maxsus zaruriyatsiz ishlatish tavsiya etilmaydi.
Identifikatorlarni alfavit harflaridan hosil qilish qoidasini qarab chiqamiz.
- identifikatorning birinchi simvoli harf yoki “_” simvoli bo`lishi kerak;
- keyingi simvollar harf, raqam va “_” simvolidan iborat bo`lishi mumkin;
- identifikator uzunligi(simvollar soni) chegaralanmagan;
Modifikator kalit so'zlar
Quyidagi tokenlar deklaratsiyalarning oʻzgartiruvchi roʻyxatlarida kalit soʻzlar vazifasini bajaradi va ular boshqa kontekstlarda identifikator sifatida ishlatilishi mumkin:
abstract
sinf yoki a'zoni mavhum sifatida belgilaydi.actual
multiplatforma loyihalarida platformaga xos dasturni bildiradi.annotation
izoh sinfini e'lon qiladi.companion
hamroh ob'ektini e'lon qiladi.const
xususiyatni kompilyatsiya vaqti doimiysi sifatida belgilaydi.crossinline
Inline funksiyasiga o'tkazilgan lambdada mahalliy bo'lmagan qaytishni taqiqlaydi.data
kompilyatorga sinf uchun kanonik a'zolarni yaratishni buyuradi.enum
ro'yxatga olishni e'lon qiladi.expect
deklaratsiyani platformaga xos deb belgilaydi, platforma modullarida amalga oshirilishini kutadi.external
deklaratsiyani Kotlindan tashqarida amalga oshirilganligini belgilaydi.final
a'zoni bekor qilishni taqiqlaydi.infix
infix belgisi yordamida funksiyani chaqirishga imkon beradi.inline
kompilyatorga funktsiyani inline qilishni aytadi va qo'ng'iroq saytida unga o'tgan lambdalar .inner
ichki sinfdan tashqi sinf misoliga murojaat qilish imkonini beradi.internal
joriy modulda ko'rinadigan deklaratsiyani belgilaydi.lateinit
konstruktordan tashqari null bo'lmagan xususiyatni ishga tushirishga imkon beradi .noinline
inline funksiyasiga o'tkazilgan lambda qatorini o'chiradi.open
sinfni pastki sinfga o'tkazish yoki a'zoni bekor- qilishga imkon beradi .
operator
operatorni haddan tashqari yuklash yoki konventsiyani amalga oshirish vazifasini belgilaydi.out
tip parametrini kovariant sifatida belgilaydi.override
a'zoni supersinf a'zosining bekor qilinishi sifatida belgilaydi.private
joriy sinf yoki faylda ko'rinadigan deklaratsiyani belgilaydi.protected
joriy sinf va uning pastki sinflarida ko'rinadigan deklaratsiyani belgilaydi.public
har qanday joyda ko'rinadigan deklaratsiyani belgilaydi.reified
inline funksiyasining turi parametrini ish vaqtida foydalanish mumkin deb belgilaydi.sealed
muhrlangan sinfni e'lon qiladi (cheklangan subklassga ega sinf).suspend
funktsiyani yoki lambdani to'xtatuvchi sifatida belgilaydi.tailrec
funktsiyani tail-rekursiv sifatida belgilaydi. (kompilyatorga rekursiyani iteratsiya bilan almashtirishga imkon beradi).vararg
parametr uchun o'zgaruvchan sonli argumentlarni o'tkazish imkonini beradi.
Maxsus identifikatorlar
Quyidagi identifikatorlar kompilyator tomonidan muayyan kontekstlarda aniqlanadi va ular boshqa kontekstlarda oddiy identifikator sifatida ishlatilishi mumkin:
field
mulkni qo'llab- quvvatlash maydoniga murojaat qilish uchun xususiyatga kirish vositasi ichida ishlatiladi.it
lambda ichida uning parametriga bevosita murojaat qilish uchun ishlatiladi.