Ошибочно подчеркивание добавлено, как показано ниже:Подчеркивание между цифрами
int i = 1_5;
Но не ошибка компиляции. Почему так? Выход идет так, как если подчеркивание игнорируется. Тогда почему такая особенность в Java?
Ошибочно подчеркивание добавлено, как показано ниже:Подчеркивание между цифрами
int i = 1_5;
Но не ошибка компиляции. Почему так? Выход идет так, как если подчеркивание игнорируется. Тогда почему такая особенность в Java?
Underscores in Numeric Literals См:
В Java SE 7, а затем любое число символов подчеркивания (_) может появляться в любом месте между цифрами в числовой литерал. Эта функция позволяет вам, например, разделять группы цифр в числовых литералах, что может улучшить читаемость вашего кода.
Вы не дали хорошего примера, так как 15 можно читать даже без разделения цифр на 1_5
. Но возьмите, например, номер: 100000000000, это трудно сказать, что это без подсчета цифр, так что вы можете сделать:
100_000_000_000
, что делает его легче идентифицировать номер.
В вашем примере, попробуйте:
int i = 1_5;
System.out.println(i); //Prints 15
Это новая функция, действует с Java 7. Это улучшает читаемость ваших буквальных значений.
Согласно OCA_Java_SE_7_Programmer_I_Certification_Guide_Exam_1Z0-803 Мала Гупты:
Обратите внимание на использование подчеркивания в числовых литералов. Вот некоторые из :
1) Вы не можете начинать или заканчивать буквальное значение с помощью подчеркивания.
2) Вы не можете поместить подчеркивание сразу после префиксы 0B, 0B, 0x, и 0x, которые используются для определения двоичных и шестнадцатеричных литералов значения.
3) Вы можете поместить знак подчеркивания справа после префикса 0, который используется , чтобы определить восьмеричное литеральное значение.
4) Вы не можете поместить знак подчеркивания перед суффиксом L (суффикс L равен , который используется для обозначения буквального значения как можно дольше).
5) Вы не можете использовать подчеркивание в позициях, где ожидается строка цифр .
Допустимые примеры:
long baseDecimal = 100_267_760;
long octVal = 04_13;
long hexVal = 0x10_BA_75;
long binVal = 0b1_0000_10_11;
Недействительные примеры:
int intLiteral = _100;
int intLiteral2 = 100_999_;
long longLiteral = 100_L;
Действительно, так как Java 7 ... – fge
Сво функций. Помогает с большим количеством. –