Установка короткого значения Java
Я пишу немного кода в J2ME. У меня есть класс с методом setTableId(Short tableId)
. Теперь, когда я пытаюсь написать setTableId(100)
, он дает ошибку времени компиляции. Как установить короткое значение без объявления другой короткой переменной?
При установке значения Long
я могу использовать setLongValue(100L)
, и он работает. Итак, что означает L
здесь и каков символ для значения Short
?
Спасибо
Ответы
Ответ 1
В Java целочисленные литералы имеют тип int, если они не имеют буквы "L" или "l" (предпочтение отдается капиталу L, поскольку нижний регистр L трудно отличить от номера 1). Если суффикс с L, литералы имеют тип long.
Суффикс не имеет специального имени в Спецификации языка Java. Также нет суффиксов для любых других целых типов. Поэтому, если вам нужен короткий или байтовый литерал, они должны быть лишены:
byte foo = (byte)0;
short bar = (short)0;
В setLongValue (100L) вам не обязательно обязательно включать L-суффикс, потому что в этом случае int literal автоматически расширяется до длинного. Это называется расширением примитивного преобразования в спецификации языка Java.
Ответ 2
Нет такой вещи, как байт или короткий литерал. Для короткого нажатия нужно использовать (short)100
Ответ 3
Вы можете использовать setTableId((short)100)
. Я думаю, что это было изменено на Java 5, так что числовые литералы, назначенные байту или короткие и внутри диапазона для цели, автоматически считаются целевым типом. Однако последние J2ME JVM основаны на Java 4.