Установка короткого Java значения

Я пишу немного кода в J2ME. У меня есть класс с методом setTableId(Short tableId). Теперь, когда я пытаюсь записать setTableId(100) это дает ошибку времени компиляции. Как я могу установить короткое значение, не объявляя другую короткую переменную?

При установке Long значение я могу использовать setLongValue(100L) и это работает. Так, что делает L имейте в виду здесь и для чего символ Short значение?

Спасибо

96
задан Gilberto 16 March 2016 в 15:24
поделиться

3 ответа

В Java целочисленные литералы имеют тип int, если они не суффикс с буквой 'L' или 'l' (Заглавная L предпочтительнее, так как строчную L трудно отличить от цифры 1). Если суффикс L, то литералы имеют тип long.

Суффикс не имеет специального названия в спецификации языка Java. Не существует суффиксов и для других целочисленных типов. Поэтому если вам нужен литерал short или байт, их нужно привести:

byte foo = (byte)0;
short bar = (short)0;

В setLongValue(100L) не обязательно указывать суффикс L, потому что в этом случае литерал int автоматически расширяется до long. В спецификации языка Java это называется расширением примитивного преобразования.

156
ответ дан 24 November 2019 в 05:37
поделиться

Байт или короткий литерал не существуют. Вам нужно привести к короткому, используя (короткий) 100

30
ответ дан 24 November 2019 в 05:37
поделиться

Вы можете использовать setTableId((short)100). Я думаю, что это было изменено в Java 5 таким образом, что числовые литералы, присвоенные байту или short и находящиеся в диапазоне для целевого типа, автоматически принимаются за целевой тип. Однако последние J2ME JVM происходят от Java 4.

8
ответ дан 24 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: