Introducción
Kotlin es un lenguaje de programación moderno que se ejecuta en la JVM (Java Virtual Machine). Es completamente interoperable con Java y ofrece una sintaxis más concisa, seguridad de nulos y muchas características modernas.
¿Por Qué Kotlin?
Ventajas sobre Java:
- Código más conciso (menos código repetitivo)
- Seguridad de nulos integrada en el sistema de tipos
- Funciones de extensión
- Clases de datos
- Corrutinas para programación asíncrona
- Conversiones inteligentes
- Parámetros por defecto y con nombre
Configurando Kotlin
IntelliJ IDEA:
// Instala IntelliJ IDEA (Community o Ultimate)
// El soporte de Kotlin viene incluido
// File -> New -> Project -> Kotlin
Primer Programa en Kotlin:
fun main() {
println("¡Hola, Kotlin!")
}
Sintaxis Básica
Variables:
// Inmutable (solo lectura) - preferida
val nombre = "Alicia"
val edad = 25
// Mutable (puede cambiar)
var puntaje = 100
puntaje = 150 // OK
// Declaración de tipo explícita
val saludo: String = "Hola"
val conteo: Int = 42
Inferencia de Tipos: Kotlin infiere tipos automáticamente:
val numero = 42 // Int
val pi = 3.14159 // Double
val estaActivo = true // Boolean
val mensaje = "Hola" // String
Tipos de Datos
Tipos Primitivos:
val byte: Byte = 127
val short: Short = 32767
val int: Int = 2147483647
val long: Long = 9223372036854775807L
val float: Float = 3.14f
val double: Double = 3.14159
val char: Char = 'A'
val boolean: Boolean = true
Plantillas de String:
val nombre = "Alicia"
val edad = 25
// Interpolación de strings
println("Nombre: $nombre")
println("Edad en 5 años: ${edad + 5}")
// Strings multi-línea
val poema = """
|Las rosas son rojas
|Las violetas azules
|Kotlin es genial
|Y tú también
""".trimMargin()
Operaciones Básicas
Aritméticas:
val a = 10
val b = 3
println(a + b) // 13
println(a - b) // 7
println(a * b) // 30
println(a / b) // 3
println(a % b) // 1
Comparación:
val x = 5
val y = 10
println(x == y) // false
println(x != y) // true
println(x < y) // true
println(x > y) // false
println(x <= y) // true
println(x >= y) // false
Operadores Lógicos:
val esAdulto = true
val tieneLicencia = false
println(esAdulto && tieneLicencia) // false (AND)
println(esAdulto || tieneLicencia) // true (OR)
println(!esAdulto) // false (NOT)
Control de Flujo
Expresión If:
val edad = 18
val estado = if (edad >= 18) "Adulto" else "Menor"
// If multi-línea
val resultado = if (puntaje >= 90) {
println("¡Excelente!")
"A"
} else if (puntaje >= 80) {
"B"
} else {
"C"
}
Expresión When (Switch):
val diaDeLaSemana = 3
val nombreDia = when (diaDeLaSemana) {
1 -> "Lunes"
2 -> "Martes"
3 -> "Miércoles"
4 -> "Jueves"
5 -> "Viernes"
6, 7 -> "Fin de semana"
else -> "Día inválido"
}
// Con rangos
when (edad) {
in 0..12 -> println("Niño")
in 13..17 -> println("Adolescente")
in 18..64 -> println("Adulto")
else -> println("Adulto mayor")
}
Rangos
// Rango de 1 a 10 (inclusivo)
for (i in 1..10) {
println(i)
}
// Rango excluyendo último valor
for (i in 1 until 10) {
println(i) // 1 a 9
}
// Rango inverso
for (i in 10 downTo 1) {
println(i)
}
// Con pasos
for (i in 0..100 step 10) {
println(i) // 0, 10, 20, ..., 100
}
// Verificar si un valor está en el rango
val puntaje = 85
if (puntaje in 80..90) {
println("¡Buen puntaje!")
}
Buenas Prácticas
- Prefiere
valsobrevarpara inmutabilidad - Usa inferencia de tipos cuando el tipo es obvio
- Usa plantillas de string en lugar de concatenación
- Usa
whenpara lógica condicional compleja - Aprovecha los rangos para iteraciones numéricas
Patrones Comunes
Operador Elvis:
val nombre: String? = null
val nombreMostrado = nombre ?: "Desconocido" // "Desconocido"
Llamada Segura:
val longitud = nombre?.length // null si nombre es null
Desestructuración:
val (x, y) = Pair(10, 20)
println("x: $x, y: $y")
Conclusión
Kotlin ofrece una sintaxis moderna y concisa mientras mantiene interoperabilidad completa con Java. Comprender estos conceptos básicos te prepara para características más avanzadas de Kotlin.
En el próximo capítulo, exploraremos funciones y funciones de extensión en detalle.