Kotlin Ma'lumot turlari

Kotlinda o'zgaruvchining turi uning qiymati bilan belgilanadi:

val myNum = 5             // Int
val myDoubleNum = 5.99    // Double
val myLetter = 'D'        // Char
val myBoolean = true      // Boolean
val myText = "Hello"      // String

Biroq, oldingi darsdan, agar xohlasangiz, turni belgilash mumkinligini bilib oldingiz:

val myNum: Int = 5                // Int
val myDoubleNum: Double = 5.99    // Double
val myLetter: Char = 'D'          // Char
val myBoolean: Boolean = true     // Boolean
val myText: String = "Hello"      // String

Ba'zan siz turini ko'rsatishingiz kerak, lekin ko'pincha buni qilmaysiz. Qanday bo'lmasin, har xil turlar nimani anglatishini bilish yaxshi.

Turni qachon belgilashingiz kerakligi haqida keyinroq bilib olasiz .

Ma'lumotlar turlari turli guruhlarga bo'linadi:

  • Raqamlar
  • Belgilar
  • Mantiqiy
  • Strings
  • Massivlar

Raqamlar

Raqamlar ikki guruhga bo'linadi:

  1. Butun son turlari musbat yoki manfiy (masalan, 123 yoki -456) butun sonlarni oʻnli kasrlarsiz saqlaydi. Yaroqli turlar byte, short, int va long.
  2. Suzuvchi nuqta turlari kasr qismi bo'lgan, bir yoki bir nechta o'nli kasrlarni o'z ichiga olgan raqamlarni ifodalaydi. Ikkita turi mavjud: float va double.

Raqamli o'zgaruvchining turini belgilamasangiz, u ko'pincha int butun sonlar va double suzuvchi nuqtali raqamlar uchun qaytariladi.

Butun sonlar turlari

Bayt

Ma'lumotlar bayt turi -128 dan 127 gacha bo'lgan butun sonlarni saqlashi mumkin. Bu int qiymat -128 va 127 oralig'ida bo'lishiga ishonchingiz komil bo'lsa, xotirani saqlash uchun boshqa butun son turlari o'rniga yoki ishlatilishi mumkin:

Misol:

val myNum: Byte = 100
println(myNum)

Short

Ma'lumotlar short turi -32768 dan 32767 gacha bo'lgan butun raqamlarni saqlashi mumkin:

Misol:

val myNum: Short = 5000
println(myNum)

Ma'lumotlar int turi -2147483648 dan 2147483647 gacha bo'lgan butun raqamlarni saqlashi mumkin:

Misol:

val myNum: Int = 100000
println(myNum)

Long

Ma'lumotlar long turi -9223372036854775807 dan 9223372036854775807 gacha bo'lgan butun raqamlarni saqlashi mumkin. Int u qiymatni saqlash uchun etarlicha katta bo'lmaganda ishlatiladi. Majburiy emas, siz qiymatni "L" bilan tugatishingiz mumkin:

Misol:

val myNum: Long = 15000000000L
println(myNum)

Int va Long o'rtasidagi farq

Butun son int 2147483647 gacha bo'lgan uzunlikdir. Agar undan oshib ketsa, u quyidagicha long bilan aniqlanadi:

Misol:

val myNum1 = 2147483647  // Int
val myNum2 = 2147483648  // Long

Suzuvchi nuqta turlari

Suzuvchi nuqta turlari 9,99 yoki 3,14515 kabi kasrli raqamlarni ifodalaydi va float ma'lumotlar double turlari kasr sonlarni saqlashi mumkin:

Float misoli:

val myNum: Float = 5.75F
println(myNum)

Double misoli:

val myNum: Double = 19.99
println(myNum)

Foydalanish float yoki double?

O'zgaruvchan nuqta qiymatining aniqligi o'nli kasrdan keyin qiymat qancha raqamga ega bo'lishi mumkinligini ko'rsatadi. Uning aniqligi  float atigi olti yoki etti o'nlik raqam, double o'zgaruvchilar esa taxminan 15 ta raqamga ega. double shuning uchun ko'pgina hisob -kitoblar uchun foydalanish xavfsizroqdir. Shuningdek, siz float turning qiymatini "F" bilan tugatishingiz kerakligini unutmang.

Ilmiy raqamlar

Suzuvchi nuqtali raqam 10 ning kuchini ko'rsatish uchun "e" yoki "E" bilan ilmiy raqam ham bo'lishi mumkin:

Misol:

val myNum1: Float = 35E3F
val myNum2: Double = 12E4
println(myNum1)
println(myNum2)

Mantiqiy

Ma'lumotlar turi boolean faqat quyidagi qiymatlarni qabul qilishi true mumkin false:

Misol:

val isKotlinFun: Boolean = true
val isFishTasty: Boolean = false
println(isKotlinFun)   // true
println(isFishTasty)   //  false 

Mantiqiy qiymatlar asosan shartli test uchun ishlatiladi, bu haqda keyingi bobda bilib olasiz.

Belgilar

Ma'lumotlar turi bitta belgini saqlash uchun char ishlatiladi. Belgi qiymati “A” yoki “c” kabi bitta tirnoq bilan oʻralgan boʻlishi kerak :

val myGrade: Char = 'B'
println(myGrade)

Java-dan farqli o'laroq, siz ma'lum belgilarni ko'rsatish uchun ASCII qiymatlaridan foydalana olmaysiz. 66 qiymati Java'da "B" ni chiqaradi, lekin Kotlinda xatolik hosil qiladi:

Misol:

val myLetter: Char = 66
println(myLetter) // Xato

Strings

Ma'lumotlar string turi belgilar (matn) ketma-ketligini saqlash uchun ishlatiladi. Satr qiymatlari qo'sh tirnoq bilan o'ralgan bo'lishi kerak :

val myText: String = "Uzbekdevs"
println(myText)

Stringlar bo'limida satrlar haqida ko'proq bilib olasiz .

Massivlar

Massivlar har bir qiymat uchun alohida o'zgaruvchilarni e'lon qilish o'rniga, bir o'zgaruvchida bir nechta qiymatlarni saqlash uchun ishlatiladi. Massivlar haqida ko'proq ma'lumotni Massivlar bo'limida bilib olasiz.

Konvertatsiya turi

Turni o'zgartirish - bu bir turdagi ma'lumotlarning qiymatini boshqa turga o'zgartirganda. Kotlinda raqamli turdagi konvertatsiya Javadan farq qiladi . Masalan, long turni quyidagi kod bilan int turga aylantirish mumkin emas:

val x: Int = 5
val y: Long = x
println(y) // xato

Raqamli ma'lumotlar turini boshqa turga aylantirish uchun siz quyidagi funksiyalardan birini ishlatishingiz kerak: toByte(), toShort(), toInt(), toLong(), tofloat(), toDouble() yoki toChar().

val x: Int = 5
val y: Long = x.toLong()
println(y)