Spec-Zone .ru
спецификации, руководства, описания, API
|
В Java SE 7 и позже, любое число символов подчеркивания (_
) может появиться где угодно между цифрами в числовом литерале. Эта опция позволяет Вам, например, разделить группы цифр в числовых литералах, которые могут улучшить удобочитаемость Вашего кода.
Например, если Ваш код содержит числа со многими цифрами, можно использовать символ подчеркивания, чтобы разделить цифры в группах три, подобный тому, как Вы использовали бы знак препинания как запятая, или пространство, как разделитель.
Следующий пример показывает другие способы, которыми можно использовать подчеркивание в числовых литералах:
long creditCardNumber = 1234_5678_9012_3456L; long socialSecurityNumber = 999_99_9999L; float pi = 3.14_15F; long hexBytes = 0xFF_EC_DE_5E; long hexWords = 0xCAFE_BABE; long maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; long bytes = 0b11010010_01101001_10010100_10010010;
Можно поместить подчеркивания только между цифрами; невозможно поместить подчеркивания в следующие места:
F
или L
суффикс Следующие примеры демонстрируют допустимые и недопустимые размещения подчеркивания (которые выделяются) в числовых литералах:
float pi1 = 3_.1415F; // Invalid; cannot put underscores adjacent to a decimal point float pi2 = 3._1415F; // Invalid; cannot put underscores adjacent to a decimal point long socialSecurityNumber1 = 999_99_9999_L; // Invalid; cannot put underscores prior to an L suffix int x1 = _52; // This is an identifier, not a numeric literal int x2 = 5_2; // OK (decimal literal) int x3 = 52_; // Invalid; cannot put underscores at the end of a literal int x4 = 5_______2; // OK (decimal literal) int x5 = 0_x52; // Invalid; cannot put underscores in the 0x radix prefix int x6 = 0x_52; // Invalid; cannot put underscores at the beginning of a number int x7 = 0x5_2; // OK (hexadecimal literal) int x8 = 0x52_; // Invalid; cannot put underscores at the end of a number int x9 = 0_52; // OK (octal literal) int x10 = 05_2; // OK (octal literal) int x11 = 052_; // Invalid; cannot put underscores at the end of a number