Darsliklar Kotlin Xotira manzili va ko'rsatkichlar

Kotlin Kotlin Xotira manzili va ko'rsatkichlar

Xotira manzili va ko’rsatkichlar — o’zgaruvchilar xotirada qanday saqlanishini tushuntiruvchi mavzu. Muhim haqiqat: Kotlin’da C’dagi kabi ochiq ko’rsatkichlar yo’q. Xotira JVM tomonidan avtomatik boshqariladi. Biroq qiymat va murojaat turlari orasidagi farqni tushunish muhim.

Murojaat (reference)Kotlin’da obyektlar xotirada saqlanib, o’zgaruvchilar ularga murojaat (havola) saqlaydi. Ko’rsatkichlar bilan bevosita ishlash yo’q — bu xavfsizlikni ta’minlaydi.

Nega Kotlin’da ko’rsatkichlar yo’q?

Kotlin xavfsizlikni birinchi o’ringa qo’yadi. C’dagi ochiq ko’rsatkichlar kuchli, ammo xavfli — noto’g’ri manzil dasturni qulatadi. Kotlin buning o’rniga murojaatlar va avtomatik xotira boshqaruvini (garbage collector) beradi. Dasturchi manzillar bilan ovora bo’lmaydi.

Qiymat va murojaat turlari

Kotlin’da oddiy turlar (Int, Boolean) qiymat sifatida, obyektlar esa murojaat sifatida ishlaydi. Buni ro’yxat misolida ko’ramiz:

fun main() {
    val a = mutableListOf(1, 2, 3)
    val b = a          // murojaat nusxalanadi
    b[0] = 99
    println(a)         // a ham o'zgardi
}
[99, 2, 3]

Diqqat: b[0] ni o’zgartirdik, ammo a ham o’zgardi — chunki a va b bir xil ro’yxatga murojaat qiladi. Bu murojaat turlarining muhim xususiyati.

Oddiy turlar mustaqil

Oddiy turlar (Int) esa qiymat bo’yicha nusxalanadi — ular mustaqil:

fun main() {
    var a = 10
    var b = a       // qiymat nusxalanadi
    b = 20
    println("a: $a, b: $b")
}
a: 10, b: 20

b ni o’zgartirsak, a o’zgarmadi — chunki ular ikki mustaqil qiymat. Bu ro’yxatdan (murojaat) farq qiladi.

Garbage Collector

Kotlin JVM ustida ishlagani uchun garbage collector ga ega — u kerak bo’lmay qolgan obyektlarni avtomatik tozalaydi. C’dan farqli o’laroq, xotirani qo’lda bo’shatish (free) shart emas. Bu ko’plab xatolarning oldini oladi va dasturlashni osonlashtiradi.

Xulosa

Bu bo’limda Kotlin’da ko’rsatkichlar nega yo’qligini, qiymat va murojaat turlarining nusxalanish farqini va garbage collector’ni ko’rib chiqdik. Kotlin xotirani xavfsiz boshqaradi. Keyingi darsda funksiyalarga o’tamiz.