Я пишу небольшой код на J2ME. У меня есть класс с методом setTableId(Short tableId)
. Теперь, когда я пытаюсь написать, setTableId(100)
это дает ошибку времени компиляции. Как я могу установить короткое значение без объявления другой короткой переменной?
При установке Long
значения могу использовать, setLongValue(100L)
и оно работает. Итак, что L
здесь означает и что означает Short
значение?
Спасибо
java
literals
primitive-types
Mubashar
источник
источник
L
это просто суффикс, используемый для обозначенияlong
литерала.Ответы:
В Java целочисленные литералы по умолчанию имеют тип int. Для некоторых других типов, вы можете суффикс литерала регистронезависимых писем , как
L
,D
,F
указать длиной, двойной или поплавок, соответственно. Обратите внимание, что для удобства чтения обычно используются прописные буквы.Спецификация языка Java не предоставляет такого же синтаксического сахара для байтовых или коротких типов. Вместо этого вы можете объявить его так, используя явное приведение:
В
setLongValue(100L)
вызове метода необязательно включатьL
суффикс, потому что в этом случае литерал int автоматически расширяется до long. В Спецификации языка Java это называется расширяющимся примитивным преобразованием.источник
d
/D
делает adouble
иf
/F
делает float!0
как(short)0
обойти наpossible lossy conversion from int to short
ошибку, даже если 0 является коротким.Байт или короткий литерал не существует. Вам нужно преобразовать в короткий, используя
(short)100
источник
Как правило, вы можете просто преобразовать переменную в
short
.Вы также можете столкнуться с подобными проблемами, которые могут сбивать с толку. Это потому, что
+
оператор повышает их доint
Приведение элементов не поможет:
Вам нужно привести выражение:
источник
Вы можете использовать
setTableId((short)100)
. Я думаю, что это было изменено в Java 5, поэтому числовые литералы, присвоенные байтовому или короткому значению и находящиеся в пределах диапазона для цели, автоматически считаются целевым типом. Однако последние J2ME JVM являются производными от Java 4.источник