Variables en Kotlin, diferencias con Java. var vs val (KDA 02)

En este segundo capítulo vamos a ver cómo funcionan las variables en Kotlin, qué es eso de val y de var, y cuál es más recomendable utilizar.
He querido empezar por aquí, porque te va a ser útil para entender después cómo crear “campos” en nuestras clases (ya veremos que no se llaman así).
Si quieres aprender todo sobre Kotlin y su situación actual en el sector del desarrollo Android, te animo a que te apuntes a mi masterclass gratuita donde te daré la hoja de ruta para aprender el lenguaje y sacarle el máximo partido.
Variables en Kotlin
Las variables en Kotlin nos permiten, al igual que en Java, asignar valores que luego pueden ser modificados y utilizados en distintos puntos de nuestro programa, siempre y cuando estén dentro del ámbito en el que se ejecuta dicho código.
Pero me voy a centrar en las diferencias que encontramos con Java.
1. Las variables pueden ser mutables e inmutables
Esto también se puede hacer en Java (marcándola como final si queremos que no se pueda modificar), pero en Kotlin es mucho menos verboso y cobran una nueva importancia: en Kotlin se prefieren los valores inmutables siempre que sea posible.
El que la mayor parte de nuestro programa sea inmutable genera muchos benificios, algunos de los cuales puedes ver en este artículo que escribí en GenbetaDev al respecto.
2. Se declaran indicando val o var según sean inmutables o mutables
Algo muy interesante de Kotlin es que en muchos puntos no hay que especificar el tipo de datos con el que estamos trabajando, siempre que el compilador lo pueda inferir.
Así que sólo tenemos que indicarle var o val en función del tipo de variable que queramos generar, y el tipo podrá normalmente inferirse del lado derecho. Aún así, podemos especificarle un tipo de forma explícita.
Algunos ejemplos:
var x = 7
var y: String = "my String"
var z = View(this)
Spoiler: como ves, no hace falta utilizar new para crear una nueva instancia de un objeto.
3. Se hace casting automático de tipos
Siempre que el compilador sea capaz de de detectar que no hay otra opción posible, el casting se hará automáticamente. ¡Una maravilla!
val z: View = findViewById(R.id.my_view)
if (z is TextView) {
z.text = "I've been casted!"
}
Curiosidad: ¿has visto que no he llamado a
setText()
? ¡La resolveré en los próximos artículos!
4. En Kotlin todo es un objeto
No existen los tipos básicos, y no existe void
. Si algo no devuelve nada, en realidad devuelve el objeto Unit
. La mayoría de las veces se puede omitir, pero está ahí, acechando.
Por tanto, todo esto son objetos:
val x: Int = 20
val y: Double = 21.5
val z: Unit = Unit
5. Los tipos numéricos más simples no se pueden asignar a otros más complejos
Por ejemplo, un entero no puede ser asignado a una variable de un long. Esto no compila:
val x: Int = 20
val y: Long = x
Necesita hacerse un casting explícito:
val x: Int = 20
val y: Long = x.toLong()
Conclusión
Estas son algunas de las diferencias más destacadas que puedes encontrar entre las variables en Java y en Kotlin. En general, las variables en Kotlin aportan mucha más flexibilidad, seguridad (debido a la convención de usar val siempre que se pueda) y un código más limpio y conciso.
Si todo esto te apasiona tanto como a mí, te animo a que te apuntes a mi training gratuito donde te contaré todo lo que necesitas para aprender a crear tus Apps Android en Kotlin desde cero.
Cómo conseguir la localización amplia en Android
Cómo pedir permisos en Jetpack Compose