Uso de Var

¿Para que sirve la palabra reservada var?

Crear objetos y variable tipo primitivo sin indicar el tipo. Es decir hay una inferencia de tipo, java internamente gestiona el tipo de dato. La sintaxis es la siguiente:

ArrayList<Persona> lista= new ArrayList<>();
lista.add(new Persona("pedro","perez",20));
// Pasamos a esto
var lista= new ArrayList<Persona>();
lista.add(new Persona("pedro","perez",20));

Condiciones

  • Siempre variable inicializadas.
  • Se puede usar con String, char, long, float, double, boolean y Objetos.
  • Con byte y short necesario Cast.
  • Null no es inferible, lo mismo con arrays.
  • Con lambda se puede usar, pero si tiene más de un argumento hay que usarlo en todos. Aspecto muy cambiante en las últimas versiones de Java:
(var s1, var s2) -> s1 + s2
// No permitido
(var s1, s2) -> s1 + s2
// Tampoco esto
(var s1, String s2) -> s1 + s2

Aclaración importante

Java sigue siendo fuertemente tipado en comparación a otros lenguajes de programación como JavaScript. Es decir una variable no puede cambiar de tipo al que referencia.

Ejemplo

//datos primitivos
var texto = "abc";
var caracter = '\n';
var largo = 42L;
var flotante = 3.14f;
var doble = 3.14d;
var logico = true;

//necesario cast con este tipo
var octeto = (byte)1;
var corto = (short)2;
var entero = 3;

var p=new Object();

var list = new ArrayList<String>(); // infiere ArrayList<String>

//Siempre algo inicializado
//var count=null;// Compilation error  

//Uso cómodo en bucles for
var numbers = List.of("a", "b", "c");
//for corto
for (var nr : numbers)
    System.out.print(nr + " ");
//for largo
for (var i = 0; i < numbers.size(); i++)
    System.out.print(numbers.get(i) + " ");