گونه های داده های غیر عددی در کاتلین:
در کنار داده‌های عددی، گونه های مختلفی از داده‌های غیر عددی نیز در لهجه نرم افزار نویسی اندروید کاتلین برای ذخیره مقادیر غیر عددی مانند متن، کاراکترها و مقادیر منطقی (true/false) وجود دارااست. در‌این بخش از یادگرفتن نرم‌افزار نویسی کاتلین میخواهیم بدین نوع طراحی اپلیکیشن در مشهد  اطلاعات اشاره کنیم.
 
گونه های اساسی داده‌های غیر عددی در کاتلین عبارتند از:
Char: برای ذخیره یک کاراکتر تکی یونیکد (Unicode character) به کار گیری میشود. کاراکترها با نماد تک کوتیشن (') مشخص و معلوم میشوند.
 
String: برای ذخیره دنباله‌ای از کاراکترها به کارگیری میشود. فن‌ها با نماد دابل کوتیشن (") معلوم میشوند.
 
Boolean: برای ذخیره مقادیر منطقی true (صحیح) یا این که false (اشتباه) به کارگیری میشود. این نوع داده برای در دست گرفتن جریان نرم‌افزار (مانند امرها if و رینگ‌ها) بسیار اصلی میباشد.
 
Unit: یک نوع داده خاص میباشد که مساوی void در گویش‌های دیگر میباشد. از آن برای علامت دادن اینکه یک تابع هیچ مقدار مفیدی برنمی‌گرداند به کار گیری می گردد. در شرایطی که تابعی به صورت مصرح نوع بازگشتی نداشته باشد، به صورت ضمنی Unit در حیث گرفته میشود.
 
Any: یک نوع داده اساس برای کل اشکال غیر تهی (non-nullable) در کاتلین میباشد. متغیری که از نوع Any تعریف و تمجید گردیده باشد می تواند مقادیر از هر نوع دیگری را بپذیرد.
 
Nothing: این نوع داده علامت میدهد که یک عبارت هیچ زمان به صورت معمولی کامل شدن نمی شود. از جمله، تابعی که مدام یک استثنا پرتاب می‌نماید یا این که وارد یک رینگ بی‌غایت میگردد، نوع بازگشتی آن می تواند Nothing باشد.
 
Nullable Types: هر نوع داده در کاتلین به صورت پیش‌فرض غیر تهی (non-nullable) میباشد، بدین معنا که نمی‌تواند مقدار null را بپذیرد. با این درحال حاضر، با اضافه کردن آرم پرسش (?) به انتهای یک نوع، می توانید آن را به یک نوع تهی‌پذیر (nullable type) تبدیل فرمائید. به عنوان مثال، String? میتواند مقدار String یا این که null را بپذیرد.
 
نمونه هایی برای اشکال داده‌های غیر عددی در کاتلین
در اینجا نمونه‌هایی برای گونه های داده‌های غیر عددی در کاتلین بیان شده میباشد:
 
۱. Char (کاراکتر)
 
Char برای ذخیره یک کاراکتر تکی به کارگیری میشود و با کوتیشن تکی (') تسلط می شود.
 
fun main() {
val initial: Char = 'J'
println("اولین حرف نام: $initial")
 
val grade: Char = 'A'
println("نمره دانشجو: $grade")
 
val currencySymbol: Char = '$'
println("نماد ارز: $currencySymbol")
}
کاربرد: ذخیره یک کلام، آرم، یا این که رقم تکی.
 
۲. String (حرفه)
 
String برای ذخیره دنباله‌ای از کاراکترها (متن) به کارگیری میگردد و با دابل کوتیشن (") تسلط می شود. کاتلین از حرفه‌های چندین خطی (triple quotes """) و String Interpolation جانبداری می‌نماید.
 
fun main() {
val userName: String = "علی احمدی"
println("نام کاربری: $userName")
 
val welcomeMessage: String = "خوش آمدید به برنامه ما!"
println(welcomeMessage)
 
// String Interpolation (جایگذاری متغیرها در رشته)
val product: String = "لپ‌تاپ"
val price: Double = ۱۲۰۰.۵۰
println("قیمت $product: $price دلار")
 
// Multi-line String (رشته چند خطی)
val poem: String = """
روز و شب در پی یارم،
شام و سحر در کارم.
شوق وصالش هر دم،
همدم و همیارم.
""".trimIndent() // trimIndent() برای حذف تورفتگی‌های اضافی
println("شعر:\n$poem")
}
کاربرد: ذخیره اسم‌ها، نشانی‌ها، پیام‌ها، محتوای فولدر، URLها و هر نوع داده متنی.
 
۳. Boolean (منطقی)
 
Boolean صرفا قادر است دو مقدار true یا این که false را ذخیره نماید.
 
fun main() {
val isActive: Boolean = true
println("موقعیت فعال: $isActive")
 
val isLoggedOut: Boolean = false
println("آیا از سیستم بیرون گردیده‌است؟ $isLoggedOut")
 
// استعمال در امرها شرطی
val hasPermission: Boolean = true
if (hasPermission) {
println("دسترسی مجاز است.")
} else {
println("دسترسی رد شد.")
}
}
کاربرد: نماد دادن حالت‌های دودویی (آری/نه، پر‌نور/خموشی)، حاصل مقایسات، و در اختیار گرفتن جریان نرم افزار.
 
۴. Unit
Unit نوع بازگشتی میباشد که آرم می دهد یک تابع هیچ مقدار معنا‌داری را برنمی‌گرداند. این مساوی void در جاوا میباشد. در صورتیکه نوع بازگشتی تابع صریحاً بیان نشود، به صورت پیش‌فرض Unit میباشد.
 
fun printGreeting(): Unit { // صریحاً Unit را تعریف کردیم
println("سلام، چگونه‌اید؟")
}
 
fun sayGoodbye() { // Kotlin به طور خودکار Unit را استنتاج می‌کند
println("خداحافظ!")
}
 
fun main() {
printGreeting()
sayGoodbye()
 
val resultOfUnitFunction: Unit = printGreeting() // می‌توانیم نتیجه را به Unit اختصاص دهیم
println("نتیجه تابع Unit: $resultOfUnitFunction") // خروجی: kotlin.Unit
}
کاربرد: در توابعی که صرفا عملیاتی اجرا میدهند و نیازی به بازگرداندن هیچ پاره ای وجود ندارد.
 
۵. Any
Any ریشه سلسله مراتب کلاس‌های غیر تهی در کاتلین میباشد. به‌این معنا که هر نوع داده‌ای (به جز null) میتواند به یک متغیر از نوع Any تخصیص یابد.
 
fun main() {
var mixedBag: Any = ۱۰۰ // Int
println("محتوا: $mixedBag")
 
mixedBag = "این یک فن میباشد." // String
println("محتوا: $mixedBag")
 
mixedBag = true // Boolean
println("محتوا: $mixedBag")
 
mixedBag = ۳.۱۴ // Double
println("محتوا: $mixedBag")
 
// برای دسترسی به اعضای نوع مهم، نیاز به cast دارید
// if (mixedBag is String) {
// println("ارتفاع حرفه: ${mixedBag.length}")
// }
}
کاربرد: وقتی که نیاز دارید یک متغیر بتواند اشکال مختلفی از داده‌ها را در طول ایفا نگه دارااست (برای مثالً در لیست‌های ناهمگن یا این که هنگام شغل با JSON انعطاف‌پذیر).
 
۶. Nothing
 
Nothing یک نوع خاص میباشد که نشانه میدهد یک تابع یا این که عبارت هیچ زمان به صورت معمولی کامل شدن نمیشود. این نوع، مقداردهی ندارد و هیچ مثال‌ای از آن نیست.
 
fun terminateProgram(): Nothing {
throw IllegalStateException("برنامه متوقف شد!") // همیشه یک استثنا پرتاب می‌کند
}
 
fun infiniteLoop(): Nothing {
while (true) {
// این حلقه هرگز به پایان نمی‌رسد
}
}
 
fun main() {
// نمونه به کارگیری (کامنت گردیده زیرا نرم افزار را متوقف می‌نماید)
// println("پیش از توقف")
// terminateProgram() // این خط نرم‌افزار را متوقف می‌نماید و خطوط آینده جاری ساختن نمی شوند
// println("پس از توقف")
 
// نمونه دیگر
// val value = if (someCondition) {
// "some value"
// } else {
// terminateProgram() // اگر شرط برقرار نباشد، هرگز به این نقطه نمی‌رسد
// }
}
کاربرد: در توابعی که برای پرتاب استثنا یا این که داخل شدن به یک رینگ بی‌غایت پیاده سازی گردیده‌اند و هیچ گاه به یک نقطه برگشت معمولی نمی رسند.