Похоже, что кто-то убил URL в оригинальном сообщении (OP). Вот весь неприятный URL на случай, если какая-то функция форматирования убьет его снова:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Конкретная цитата с той страницы, на которой вы говорите, выглядит следующим образом:
Вы можете ставить подчеркивание только между цифрами; Вы не можете поместить подчеркивание в следующих местах:
В начале или в конце числа
Рядом с десятичной точкой в литерале с плавающей запятой
До суффикса F или L
В позициях, где ожидается строка цифр
Кстати, в стремлении быть настолько привередливым, насколько это возможно, следует отметить, что для третьего пункта вы также не можете использовать подчеркивание перед суффиксом D, как показано в следующем примере. :
double trouble = 123.456_D; //fail
float myBoat = 321.123_F; //fail
long winded = 90210_L; //fail
Третий пункт мне тоже показался довольно любопытным. Я имею в виду, по большей части, все сценарии покрыты первыми тремя пунктами, так что же это за таинственная «цепочка цифр», за которую они говорят? Какой сценарий фактически не рассматривается первыми тремя пунктами, что заставляет их добавить этот таинственный четвертый?
Первоначально я думал, что они говорят о шестнадцатеричной записи или двоичной записи, где число ожидается после b или x, как в следующих примерах, которые не работают:
byte size = 0_b111101; //fail
byte me = 0b_111101; //fail
int hexed = 0_x_BABE; //fail
Тем не менее, я думаю, что технически это может совпадать с первым пунктом, который говорит, что подчеркивание не может быть в начале числа; но, разумеется, после «b» или «x» ожидается «строка чисел» при использовании двоичного или шестнадцатеричного кода, верно? Так что, если бы я был игроком на ставки, я мог бы положить немного денег за двоичный / шестнадцатеричный сценарий. Но у меня есть другой вероятный сценарий, по которому я мог бы застраховать свою ставку. Вот и все.
Лично я хотел бы, чтобы в Java существовало правило, которое гласит, что вы можете использовать только слово «строка», когда говорите о java.lang.String. Разрешение термину «строка» сохранить пешеходное значение приводит к путанице, и это прекрасный пример.
Теперь, если четвертый пункт говорит: «В позициях, где ожидается строка цифр java.lang.String», я мог бы прийти к выводу, что они говорят о реальных объектах java.lang.String, которые представляют числа, которые должны быть разобранным Итак, возьмите этот кусок кода:
int i = Integer.parseInt("123_456");
Будет ли это компилироваться? Будет ли это работать? Он будет хорошо скомпилирован, но, конечно, метод parseInt ожидает java.lang.String чисел, а проверка или анализ этого числового java.lang.String вызовет следующую ошибку во время выполнения:
Исключение в потоке "main" java.lang.NumberFormatException: для ввода
строка: "123_456" в
java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)
в java.lang.Integer.parseInt (Integer.java:492) в
java.lang.Integer.parseInt (Integer.java:527)
в Tester.main (Tester.java:7)
Конечно, это ошибка времени выполнения, и похоже, что документация Oracle действительно говорит об ошибках, которые будут помечены во время компиляции. Но это, безусловно, сценарий, в котором ожидается «строка чисел».
Теперь, если бы только документация Oracle была в формате Wiki. Может соблазнить меня пойти и добавить что-то вроде следующего:
Вы можете ставить подчеркивание только между цифрами; Вы не можете поместить подчеркивание в следующих местах:
В начале или в конце числа
Рядом с десятичной точкой в литерале с плавающей запятой
До суффикса 'F' или 'L' или 'D' (я добавил 'D')
До или после шестнадцатеричного и двоичного маркеров 'x' и 'b'
И если вы предоставите java.lang.String для метода, который не ожидает ничего, кроме чисел, ожидайте, что исключение во время выполнения будет выдано алгоритмом синтаксического анализа, который используется за кулисами.
Кстати, я только что написал небольшую статью на эту тему на TheServerSide. Не стесняйтесь взглянуть. Статья предназначена для достижения цели сертификации Oracle Certified Professional, сертификации Java 7 Programmer, но это довольно всеобъемлющая и простая для чтения статья, в которой просто в общих чертах объясняются правила использования подчеркивания.
Сертификация OCPJP: Что нужно знать о числовых литералах с подчеркиванием
Надеюсь, это поможет.