Saltar a contenido

1.2 Práctica con el lenguaje

Estructura de un programa Kotlin

// 1. Importaciones (opcionales)
import kotlin.math.sqrt

// 2. Funciones y clases
fun cuadrado(n: Int): Int = n * n

// 3. Punto de entrada
fun main() {
    println(cuadrado(5)) // 25
    println(sqrt(16.0))  // 4.0
}

Todo programa empieza en fun main(). No hace falta ; al final de las sentencias y los bloques van entre { }. No es obligatorio meter el código en una clase.

Variables: val y var

val nombre = "Ana"      // inmutable (no se puede reasignar), tipo inferido: String
var edad = 20           // mutable
edad = 21
val altura: Double = 1.68   // tipo explícito
var apodo: String? = null   // puede ser null (null safety)

Null safety

Por defecto una variable no puede valer null. Para permitirlo se añade ? al tipo. Se accede con ?., se da un valor por defecto con ?: y !! afirma "no es null" (úsalo con cuidado).

Constantes

Forma Cuándo se asigna Ejemplo
val una vez, en ejecución val ahora = System.currentTimeMillis()
const val en compilación (nivel superior) const val IVA = 0.21

Literales

42 (Int), 42L (Long), 3.14 (Double), 3.14f (Float), 'a' (Char), "hola" (String), true (Boolean).

Operadores

fun main() {
    println(7 + 2)      // 9
    println(7 / 2)      // 3   (Int / Int = división entera)
    println(7 / 2.0)    // 3.5
    println(7 % 2)      // 1
    println(3 > 2 && 2 > 1) // true
    var x = 5
    x += 2              // 7
    x++                 // 8
    println(x)
    val apodo: String? = null
    println(apodo ?: "sin apodo") // sin apodo
}

Grupos: aritméticos (+ - * / %), relacionales (== != < > <= >=), lógicos (&& || !), asignación (= += -= ++ --) y los propios de Kotlin: ?: (valor por defecto), ?. (acceso seguro) y in (pertenencia a rango).

Comparar textos

En Kotlin == compara el contenido (equivale a equals), a diferencia de Java.

Entrada y salida

fun main() {
    print("¿Cómo te llamas? ")
    val nombre = readln()
    println("Hola, $nombre")                    // plantilla de texto
    println("Tienes ${20 + 1} años")            // expresión con llaves
}

Comentarios

// Comentario de una línea
/* Comentario
   de varias líneas */
/** Comentario KDoc: genera documentación */