2017-02-13 3 views
-4

Какой один из там выражений считаются ява длинные литералы:Java длинные литералы

1) 0Xf000L

2) 6L

3) (489 - 0L)/80

4) 30508600000

5) 0XBD000


Мой ответ:

1) рассматривается из-за "L" а конец

2) То же, что первый

3) не дословный, но один расчет?

4) является большим числом для длительного

5) не долго буквальным

Если я неправильно где-то пожалуйста, поправьте меня. Кроме того, если длинная переменная, которую мы инициализируем, не имеет «L» в конце, она по-прежнему считается длинным литералом? Потому что, если я делаю это в компиляторе, это позволяет мне это делать (например, 5. вопрос) Спасибо!

+1

2 и 4 долговечны, 3 могут зависеть от правил кастинга (которые я забыл). Но в любом случае, вы не можете проверить это на своей локальной Java? –

+2

Это очень просто: если у него нет «L», то это не длинный литерал. Если это вычисление, а не простое число, то это не литерал. – RealSkeptic

+0

@RealSkeptic Не совсем ... 4 не имеет L, но он слишком велик, чтобы вписаться в int, поэтому его нужно рассматривать как долго. –

ответ

1

Для 1) и 2) вы совершенно правы, они являются длинными литералами.

3), correct: Это постоянное выражение типа long. Несмотря на то, что это константа времени компиляции, она не считается литералом.

4) Нет, это не слишком большой, чтобы вписаться в long. Однако, поскольку он не имеет суффикса L, он не считается long. Это int, но в то же время слишком большой, чтобы соответствовать int, так, как описано в комментариях, это ошибка времени компиляции.

5) является литералом int. Он может использоваться везде, где ожидается значение long (например, назначено переменной long), но вы правы, это не делает его длинным литералом.

Основным правилом является то, что RealSkeptic сказал: «Целочисленный литерал имеет тип long, если он суффикс с буквой ASCII L или l (ell); в противном случае это тип int (п. 4.2.1) »(здесь приведено от JLS section 3.10.1).

(И только, чтобы получить на мыльницу, цитата продолжает:. Предпочтителен суффикс L, потому что буква л (флигель) часто бывает трудно отличить от цифры 1 (один))

+0

Спасибо, это то, что я искал – vucko95

+0

Нечего мне благодарить, я просто подытожил то, что уже было сказано в комментариях. Я просто подумал, что это может быть приятно для будущих читателей, и теперь ясно, что на этот вопрос был дан ответ. –

Смежные вопросы