Variables en Kotlin

video[Tutorial Variables en Kotlin

La declaración de variables utiliza una sintaxis diferente a Java. Puedes apreciar cómo es necesario utilizar la palabra reservada var.

int i = 1;
String s = "Hola";
double d; 
var i: Int = 1
var s: String = "Hola"
var d: Double 
var i = 1
var s = "Hola"
var d: Double  
Como se muestra en la tercera columna, el tipo de una variable puede ser omitido en caso de que pueda deducirse del contexto. Esto no quiere decir que una variable puede cambiar de tipo más adelante. Kotlin es un lenguaje fuertemente tipado.
Existen dos tipos de variables en Kotlin, mutables e inmutables. Para diferenciarlas iniciaremos var o val. Una variable inmutable no puede ser modificada una vez ha sido inicializada. Es decir, se comporta como una constante. Es lo mismo que utilizar final en Java. El concepto de inmutabilidad es muy interesante. Al no poder cambiar los objetos estos son más robustos y eficientes. Siempre que podamos hemos de usar objetos inmutables.
final int i = j + 1;
final String s ="Hola"; 
val i = j + 1
val s = "Hola" 
val i = 1
i = i + 1   //ERROR  
Si un valor es conocido en tiempo de compilación se pueden marcar como const:
const val PI = 3.1416 
const val MONEDA = "Euro" 
Las constantes en tiempo de compilación solo pueden declararse en el nivel superior (fuera de una clase) o como miembro de una clase. Además, solo pueden contener valores primitivos o de String.
 Los tipos primitivos de Java (int, double, char, …) han sido reemplazados por clases (Int, Double, Char, …). Internamente, estos valores se representan como lo hace Java, pero estos detalles son ocultados al programador que ha de tratarlos como si fueran clases.
En la siguiente tabla se muestra los tipos simples en Kotlin. Su representación interna coincide al 100% con los de Java, la única diferencia es que en Kotlin son tratados como objetos. Esto simplifica la programación; en Kotlin solo tendremos que tratar con un tipo de datos, los objetos. Pero internamente se pasan a tipos primitivos cuando es posible.
El tipo Unit corresponde a void en Java.
En Kotlin no hay conversión directa entre números, de modo que tendremos que usar las funciones correspondientes para cambios de tipo. Además, Char no puede ser convertido directamente a un número. 
val i: Int = 7
val d: Double = i.toDouble
val c: Char = 'c'
val i: Int = c.toInt()  
En Kotlin no es necesario realizar un typecast cuando solo hay una alternativa.
Los operadores para manipular variables coinciden en Java y Kotlin. Con excepción de los que trabajan con operaciones a nivel de bit:
int v = 0b00110100 | 0b00001111;
int v = 0b00110100 & 0b00001111;
int v = 0b00110100 ^ 0b00001111;
int v = 1 << 4;
int v = 0b10000000 >> 1;
int v = 0b10000000 >>> 1;
int v = ~ 0b10000000; 
val v = 0b00110100 or  0b00001111
val v = 0b00110100 and 0b00001111
val v = 0b00110100 xor 0b00001111
val v = 1 shl 4
val v = 0b10000000 shr 1
val v = 0b10000000 ushr 1
val v = 0b10000000.inv() 

Strings

Usa el operador + para concatenar cadenas, o incluso otros tipos siempre que el primer elemento sea una cadena:

println("La cadena " + s + " tiene " + s.length + " caracteres.")

Puedes usar el carácter $ para insertar variables o expresiones:

printn("La cadena $s tiene ${s.length} caracteres.")

Para añadir el carácter $ usa:

println("Precio en dólares ${'$'}99")
En Kotlin puedes declarar una cadena usando comillas triples. Estas cadenas pueden contener saltos de línea y tabuladores sin necesidad de usar \n, \t y \":
val cadena = "\n<HTML>\n\t\"texto\"\n</HTML>" 
 
 
 
 
val cadena ="""
<HTML>
    "texto"
</HTML>
"""