int a, double d
int a; double d;
int i = 1;
double j = 1.0;
for(; i<=10, j<=9.99; i++, j++) {}
private HashMap<Level, ArrayList<Sudoku>> storage = new HashMap<>();
Integer[] arr = new Integer[5]; // так вы объявляете массив длинной 5 элементов.
Integer[] arr1; // переменная arr1 объявлена, но не инициализирована.
Integer[] arr;
arr = new Integer[5];
Возможно, вы слышали термин «замыкание» (closure, не путайте с языком программи- рования Clojure) и вам интересно, соответствуют ли его определению лямбда-выражения. На более формальном языке замыкание — экземпляр функции с возможностью без всяких ограничений обращаться к нелокальным по отношению к этой функции переменным. Например, замыкание можно передать как аргумент другой функции. Оно может также обращаться к переменным, объявленным вне его области видимости, и изменять их значения. Лямбда-выражения и анонимные классы Java 8 похожи на замыкания: их можно передавать в качестве аргументов методам, они могут обращаться к переменным вне своей области видимости. Но на них налагается ограничение: они не могут модифицировать содержимое локальных переменных метода, в котором описаны. Эти переменные фактически являются неизменяемыми (final). Удобно считать, что лямбда-выражения замыкают значения, а не переменные. Как уже объяснялось ранее, это ограничение связано с тем, что локальные переменные располагаются в стеке и неявным образом ограничены своим потоком выполнения. Если разрешить захват изменяемых локальных переменных, это приведет к открытию новых потоконебезопасных, а значит, нежелательных возможностей (переменные экземпляра в этом смысле допустимы, поскольку хранятся в куче, совместно используемой разными потоками выполнения).