Подчеркивание в числовых литералах - PullRequest
1 голос
/ 22 января 2012

На официальном Java-сайте Я сталкивался с этими строками

    you cannot place underscores in the following places:

     At the beginning or end of a number...

Также они привели пример

int x1 = _52;              // This is an identifier, not a numeric literal

Когда я использовал его в своем коде, онне выдал ошибку времени компиляции

long l = _23L;      

Можем ли мы использовать _ в начале?Что это значит под

This is an identifier, not a numeric literal

Извините, если это действительно глупый вопрос, я давно не пересматривал основы Java.

РЕДАКТИРОВАТЬ:
Я использую Windows XP и Java 7

java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) Client VM (build 22.0-b10, mixed mode, sharing)

Ответы [ 5 ]

2 голосов
/ 22 января 2012

Литералы - это любая вещь, которую вы жестко закодировали в коде, например:

int x  = 10;
String str = "hello";

При этом 10 и hello являются литералами.

Итак, числовой литерал - не что иное, как литерал, имеющий числовое значение.

Идентификаторы - это имена, данные объектам, классам и т. Д., Но они не могут быть keywords такими, как int, boolean, null и т. Д.

Итак, в приведенном выше примере x, str and String являются идентификаторами.

СТОРОННОЕ ПРИМЕЧАНИЕ. То, как вы определяете числовые литералы, отличается от JDK 6 до JDK 7. Таким образом, рассматриваемый код будет работать только для JDK7

1 голос
/ 22 января 2012

Я думаю, вам нужно перепроверить ваш контрольный пример.

Я получаю эту ожидаемую ошибку при попытке скомпилировать это.

ariel-2:src boxcat$ javac scratch/misc/ScratchSO.java 
scratch/misc/ScratchSO.java:16: error: cannot find symbol
        long l = _23L;
                 ^
  symbol:   variable _23L
  location: class ScratchSO
1 error
1 голос
/ 22 января 2012

Когда я использовал его в своем коде, он не выдал ошибку времени компиляции

длинный l = _23L;

Это означает, что у вас должна быть где-то длинная переменная с именем _23L.

0 голосов
/ 22 января 2012

В Java 7 теперь разрешено подчеркивание в числовых литералах.

int i = 1_000_000;  // readable.
0 голосов
/ 22 января 2012

Идентификатор подобен имени переменной или имени объекта: http://java.about.com/od/i/g/identifier.htm

...