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:
abstractsinf yoki a'zoni mavhum sifatida belgilaydi.actualmultiplatforma loyihalarida platformaga xos dasturni bildiradi.annotationizoh sinfini e'lon qiladi.companionhamroh ob'ektini e'lon qiladi.constxususiyatni kompilyatsiya vaqti doimiysi sifatida belgilaydi.crossinlineInline funksiyasiga o'tkazilgan lambdada mahalliy bo'lmagan qaytishni taqiqlaydi.datakompilyatorga sinf uchun kanonik a'zolarni yaratishni buyuradi.enumro'yxatga olishni e'lon qiladi.expectdeklaratsiyani platformaga xos deb belgilaydi, platforma modullarida amalga oshirilishini kutadi.externaldeklaratsiyani Kotlindan tashqarida amalga oshirilganligini belgilaydi.finala'zoni bekor qilishni taqiqlaydi.infixinfix belgisi yordamida funksiyani chaqirishga imkon beradi.inlinekompilyatorga funktsiyani inline qilishni aytadi va qo'ng'iroq saytida unga o'tgan lambdalar .innerichki sinfdan tashqi sinf misoliga murojaat qilish imkonini beradi.internaljoriy modulda ko'rinadigan deklaratsiyani belgilaydi.lateinitkonstruktordan tashqari null bo'lmagan xususiyatni ishga tushirishga imkon beradi .noinlineinline funksiyasiga o'tkazilgan lambda qatorini o'chiradi.opensinfni pastki sinfga o'tkazish yoki a'zoni bekor- qilishga imkon beradi .
operatoroperatorni haddan tashqari yuklash yoki konventsiyani amalga oshirish vazifasini belgilaydi.outtip parametrini kovariant sifatida belgilaydi.overridea'zoni supersinf a'zosining bekor qilinishi sifatida belgilaydi.privatejoriy sinf yoki faylda ko'rinadigan deklaratsiyani belgilaydi.protectedjoriy sinf va uning pastki sinflarida ko'rinadigan deklaratsiyani belgilaydi.publichar qanday joyda ko'rinadigan deklaratsiyani belgilaydi.reifiedinline funksiyasining turi parametrini ish vaqtida foydalanish mumkin deb belgilaydi.sealedmuhrlangan sinfni e'lon qiladi (cheklangan subklassga ega sinf).suspendfunktsiyani yoki lambdani to'xtatuvchi sifatida belgilaydi.tailrecfunktsiyani tail-rekursiv sifatida belgilaydi. (kompilyatorga rekursiyani iteratsiya bilan almashtirishga imkon beradi).varargparametr 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:
fieldmulkni qo'llab- quvvatlash maydoniga murojaat qilish uchun xususiyatga kirish vositasi ichida ishlatiladi.itlambda ichida uning parametriga bevosita murojaat qilish uchun ishlatiladi.