Built for developers, by XinhND

v2.1.0

Ready

Kotlin Cheat Sheet

Complete reference guide for Kotlin with interactive examples and live playground links

Basic Syntax

3 items

Hello World
Variables and Data Types
String Operations

Collections

2 items

Lists and Arrays
Maps and Sets

Functions

2 items

Function Types
Lambda Expressions

Classes and Objects

2 items

Class Definition
Inheritance and Interfaces

Coroutines

2 items

Basic Coroutines
Coroutine Patterns

Click on any section to jump directly to it

Basic Syntax

Hello World

Basic Kotlin program structure and functions

Kotlin
// Basic program
fun main() {
    println("Hello, World!")
}

// Function with parameters
fun greet(name: String) {
    println("Hello, $name!")
}

Variables and Data Types

Variable declaration and basic data types

Kotlin
// Variable declaration
var mutableVar = "Can be changed"
val immutableVal = "Cannot be changed"

// Type inference
val name = "Kotlin"        // String
val age = 25              // Int
val height = 1.75         // Double
val isActive = true       // Boolean

// Explicit type declaration
val score: Int = 100
val price: Double = 99.99
val letter: Char = 'A'

// Nullable types
var nullableName: String? = null
var nullableAge: Int? = null

// Type conversion
val intValue = 42
val longValue = intValue.toLong()
val stringValue = intValue.toString()

String Operations

String operations and templates

Kotlin
val text = "Hello Kotlin"

// String methods
println(text.length)           // 12
println(text.uppercase())      // HELLO KOTLIN
println(text.lowercase())      // hello kotlin
println(text.replace("Kotlin", "World"))  // Hello World
println(text.substring(0, 5))  // Hello

// String templates
val name = "Alice"
val age = 25
println("Name: $name, Age: $age")
println("Next year age: ${age + 1}")

// Multiline strings
val multiline = """
    Line 1
    Line 2
    Line 3
""".trimIndent()

Collections

Lists and Arrays

Working with lists and arrays

Kotlin
// Lists
val numbers = listOf(1, 2, 3, 4, 5)
val mutableNumbers = mutableListOf(1, 2, 3)

// List operations
numbers.add(6)              // Add element
numbers.remove(3)           // Remove element
numbers[0] = 10             // Update element
println(numbers.size)       // Get size
println(numbers.first())    // First element
println(numbers.last())     // Last element

// Arrays
val array = arrayOf(1, 2, 3, 4, 5)
val typedArray = IntArray(5) { it * 2 }

// List comprehension
val squares = List(5) { it * it }
val evenNumbers = (1..10).filter { it % 2 == 0 }

Maps and Sets

Working with maps and sets

Kotlin
// Maps
val map = mapOf(
    "name" to "John",
    "age" to 30,
    "city" to "New York"
)
val mutableMap = mutableMapOf<String, Any>()

// Map operations
mutableMap["job"] = "Developer"  // Add/update
mutableMap.remove("age")         // Remove
println(map["name"])             // Access
println(map.containsKey("age"))  // Check key

// Sets
val set = setOf(1, 2, 3, 3, 4)   // Duplicates removed
val mutableSet = mutableSetOf<Int>()

// Set operations
mutableSet.add(5)                // Add
mutableSet.remove(3)             // Remove
println(set.contains(2))         // Check existence

// Set operations
val set1 = setOf(1, 2, 3)
val set2 = setOf(3, 4, 5)
println(set1.union(set2))        // [1, 2, 3, 4, 5]
println(set1.intersect(set2))    // [3]
println(set1.subtract(set2))     // [1, 2]

Functions

Function Types

Different types of functions in Kotlin

Kotlin
// Basic function
fun add(a: Int, b: Int): Int {
    return a + b
}

// Single-expression function
fun multiply(a: Int, b: Int) = a * b

// Function with default parameters
fun greet(name: String = "Guest") = "Hello, $name!"

// Function with vararg
fun sum(vararg numbers: Int) = numbers.sum()

// Extension function
fun String.addExclamation() = "$this!"

// Higher-order function
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
    return operation(x, y)
}

// Usage
val result = calculate(5, 3) { a, b -> a + b }

Lambda Expressions

Lambda expressions and their usage

Kotlin
// Lambda syntax
val sum = { x: Int, y: Int -> x + y }
val square = { x: Int -> x * x }

// Lambda with receiver
val buildString = StringBuilder().apply {
    append("Hello")
    append(" ")
    append("World")
}

// Collection operations with lambdas
val numbers = listOf(1, 2, 3, 4, 5)

// Map
val doubled = numbers.map { it * 2 }

// Filter
val evenNumbers = numbers.filter { it % 2 == 0 }

// Reduce
val sum = numbers.reduce { acc, num -> acc + num }

// ForEach
numbers.forEach { println(it) }

Classes and Objects

Class Definition

Class definition and data classes

Kotlin
// Basic class
class Person(
    val name: String,
    var age: Int
) {
    // Secondary constructor
    constructor() : this("Unknown", 0)
    
    // Properties
    var email: String = ""
        private set
    
    // Methods
    fun greet() = "Hello, I'm $name"
    
    // Companion object
    companion object {
        fun create(name: String) = Person(name, 0)
    }
}

// Data class
data class User(
    val id: Int,
    val name: String,
    val email: String
)

// Usage
val person = Person("John", 30)
val user = User(1, "Alice", "alice@example.com")

Inheritance and Interfaces

Inheritance, interfaces, and sealed classes

Kotlin
// Interface
interface Drawable {
    fun draw()
    fun getArea(): Double
}

// Abstract class
abstract class Shape {
    abstract fun getArea(): Double
    fun getPerimeter(): Double = 0.0
}

// Class implementing interface
class Circle(val radius: Double) : Shape(), Drawable {
    override fun draw() {
        println("Drawing circle")
    }
    
    override fun getArea(): Double {
        return Math.PI * radius * radius
    }
}

// Sealed class
sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
}

// Usage
val circle = Circle(5.0)
println(circle.getArea())

Coroutines

Basic Coroutines

Basic coroutine usage and patterns

Kotlin
import kotlinx.coroutines.*

// Launch coroutine
fun main() = runBlocking {
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
}

// Async coroutine
suspend fun fetchData(): String {
    delay(1000L)
    return "Data"
}

// Coroutine scope
val scope = CoroutineScope(Dispatchers.Default)
scope.launch {
    val result = async { fetchData() }.await()
    println(result)
}

// Coroutine context
withContext(Dispatchers.IO) {
    // IO operations
}

withContext(Dispatchers.Default) {
    // CPU-intensive operations
}

Coroutine Patterns

Coroutine patterns and best practices

Kotlin
// Exception handling
try {
    coroutineScope {
        val result = async { fetchData() }.await()
    }
} catch (e: Exception) {
    println("Error: ${e.message}")
}

// Structured concurrency
val job = launch {
    val result1 = async { fetchData1() }
    val result2 = async { fetchData2() }
    println("${result1.await()} ${result2.await()}")
}

// Coroutine cancellation
val job = launch {
    try {
        repeat(1000) { i ->
            println("Job: I'm sleeping $i ...")
            delay(500L)
        }
    } catch (e: CancellationException) {
        println("Job cancelled")
    }
}
delay(1300L)
job.cancel()

Kotlin - Interactive Developer Reference

Hover over code blocks to copy or run in live playground