Все числа в java должны быть типа int. Следующая строка является законной в Java > 1.5
Short s = 1; // Will compile to Short s = Short.valueOf((short)1) - thus you can't exceed short max value i.e.
Short s = 4444; // is invalid for autoboxing
Те же механики идут для создания Integer
и Byte
. Но Long работает совершенно иначе. Следующий код дает ошибку времени компиляции
Long l = 10;
Long использует такой же подход для автобоксинга длинных типов, поэтому
Long l = 10L; //is valid and is translated into Long.valueOf(10L)
Я не понимаю, почему int нельзя назначить переменной Long. Любые мысли по этому вопросу?