Kotlin es un lenguaje de programación moderno que ha ganado popularidad gracias a su concisión y seguridad. En esta guía, exploraremos en detalle la sintaxis de Kotlin, proporcionando una base sólida para desarrollar aplicaciones eficientes y robustas.
Declaración de variables
En Kotlin, las variables se declaran utilizando val
o var
:
val
: declara una variable inmutable (constante).var
: declara una variable mutable.
Ejemplo:
val nombre: String = "Ana"
var edad: Int = 30
Si el tipo puede ser inferido, se puede omitir:
val nombre = "Ana"
var edad = 30
Tipos de datos básicos
Kotlin proporciona varios tipos de datos integrados:
- Números enteros:
Byte
,Short
,Int
,Long
- Números de coma flotante:
Float
,Double
- Caracteres:
Char
- Cadenas de texto:
String
- Booleanos:
Boolean
Ejemplo:
val numeroEntero: Int = 100
val numeroDecimal: Double = 123.45
val caracter: Char = 'A'
val cadena: String = "Hola, Kotlin"
val booleano: Boolean = true
Cadenas de texto
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
Las cadenas se pueden declarar con comillas dobles. Para cadenas multilínea, se utilizan comillas triples ("""
).
Interpolación de cadenas:
val nombre = "Ana"
val saludo = "Hola, $nombre"
Cadenas multilínea:
val texto = """
|Primera línea
|Segunda línea
""".trimMargin()
Funciones
Las funciones en Kotlin se declaran utilizando la palabra clave fun
.
Ejemplo básico:
fun sumar(a: Int, b: Int): Int {
return a + b
}
Funciones de expresión única:
fun multiplicar(a: Int, b: Int) = a * b
Estructuras de control
Condicionales
If como expresión:
val max = if (a > b) a else b
When
El bloque when
es similar a switch
en otros lenguajes.
Ejemplo:
when (x) {
1 -> print("Uno")
2 -> print("Dos")
in 3..5 -> print("De tres a cinco")
else -> print("Otro número")
}
Bucles
For:
for (item in coleccion) {
println(item)
}
While y do-while:
while (x > 0) {
x--
}
do {
val y = obtenerValor()
} while (y != null)
Clases y objetos
Declaración de clases
class Persona(val nombre: String, var edad: Int)
Instanciación
val persona = Persona("Ana", 30)
Propiedades y métodos
class Rectangulo(val ancho: Double, val alto: Double) {
val area get() = ancho * alto
fun perimetro() = 2 * (ancho + alto)
}
Herencia
Las clases en Kotlin son finales por defecto. Para permitir la herencia, se utiliza la palabra clave open
.
Clase base:
open class Forma
Clase derivada:
class Circulo(val radio: Double) : Forma()
Interfaces
Las interfaces pueden contener definiciones de métodos abstractos y sus implementaciones.
interface Dibujable {
fun dibujar()
}
class Cuadrado : Dibujable {
override fun dibujar() {
// Implementación
}
}
Funciones Lambda
Las funciones lambda son funciones anónimas.
Ejemplo:
val suma = { a: Int, b: Int -> a + b }
println(suma(3, 4)) // Imprime 7
Uso con colecciones:
val numeros = listOf(1, 2, 3, 4, 5)
val pares = numeros.filter { it % 2 == 0 }
Funciones de orden superior
Las funciones de orden superior aceptan otras funciones como parámetros o retornan funciones.
Ejemplo:
fun operar(a: Int, b: Int, operacion: (Int, Int) -> Int): Int {
return operacion(a, b)
}
val resultado = operar(5, 3) { x, y -> x * y }
println(resultado) // Imprime 15
Extensiones
Las funciones de extensión permiten agregar funcionalidades a clases existentes sin herencia.
Ejemplo:
fun String.saludar() = "Hola, $this"
println("Mundo".saludar()) // Imprime "Hola, Mundo"
Data Classes
Las data classes son útiles para almacenar datos y proporcionan implementaciones automáticas de métodos comunes.
Declaración:
data class Usuario(val nombre: String, val email: String)
Uso:
val usuario1 = Usuario("Ana", "ana@example.com")
val usuario2 = usuario1.copy(email = "ana.nueva@example.com")
Null Safety
Kotlin incorpora seguridad contra nulls en el sistema de tipos.
Variables que pueden ser null:
var nombre: String? = null
Operador Elvis (?:
):
val longitud = nombre?.length ?: 0
Casting seguro (as?
):
val objeto: Any = "Kotlin"
val cadena: String? = objeto as? String
Operador Let
El operador let
es útil para ejecutar un bloque de código en el contexto de un objeto.
Ejemplo:
nombre?.let {
println("El nombre tiene ${it.length} caracteres")
}
Coroutines
Las coroutines permiten escribir código asíncrono de manera secuencial.
Ejemplo básico:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000L)
println("Coroutines en Kotlin")
}
println("Comenzando")
}
Parámetros por defecto y nombrados
Las funciones pueden tener parámetros con valores por defecto.
Ejemplo:
fun saludar(nombre: String, mensaje: String = "Hola") {
println("$mensaje, $nombre")
}
saludar("Ana") // Imprime "Hola, Ana"
Parámetros nombrados:
saludar(mensaje = "Buenos días", nombre = "Luis")
Operador Infix
Permite definir funciones que pueden ser llamadas sin paréntesis ni puntos.
Ejemplo:
infix fun Int.sumar(valor: Int): Int = this + valor
val resultado = 5 sumar 10
println(resultado) // Imprime 15
Sobrecarga de operadores
Kotlin permite sobrecargar operadores para clases.
Ejemplo:
data class Punto(val x: Int, val y: Int) {
operator fun plus(otro: Punto) = Punto(x + otro.x, y + otro.y)
}
val punto1 = Punto(2, 3)
val punto2 = Punto(4, 5)
val suma = punto1 + punto2
println(suma) // Imprime Punto(x=6, y=8)
Completa Kotlin y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs