Автор оригинала: Pankaj Kumar.
Одной из функций Java 7 является подчеркивание в числовых литералах. Вы можете размещать подчеркивания между цифрами любого числового литерала, такого как int, byte, short, float, long, double. Использование подчеркиваний в числовых литералах позволит вам разделить их на группы для лучшей читабельности.
Подчеркивания в числовых литералах
Давайте посмотрим подчеркивания в числовых литералах в действии:
package com.journaldev.util;
public class UnderscoreNumericLiterals {
public static void main(String[] args) {
long ccNumber = 1234_5678_9012_3456L;
long ssn = 999_99_9999L;
float pi = 3.14_15F;
long hexadecimalBytes = 0xFF_EC_DE_5E;
long hexadecimalWords = 0xCAFE_BABE;
long maxOfLong = 0x7fff_ffff_ffff_ffffL;
byte byteInBinary = 0b0010_0101;
long longInBinary = 0b11010010_01101001_10010100_10010010;
int add = 12_3 + 3_2_1;
System.out.println("ccNumber="+ccNumber);
System.out.println("ssn="+ssn);
System.out.println("pi="+pi);
System.out.println("hexadecimalBytes="+hexadecimalBytes);
System.out.println("hexadecimalWords="+hexadecimalWords);
System.out.println("maxOfLong="+maxOfLong);
System.out.println("byteInBinary="+byteInBinary);
System.out.println("longInBinary="+longInBinary);
System.out.println("add="+add);
}
}
Вышеприведенная программа отлично компилируется, и вот результат:
ccNumber=1234567890123456 ssn=999999999 pi=3.1415 hexadecimalBytes=-1253794 hexadecimalWords=-889275714 maxOfLong=9223372036854775807 byteInBinary=37 longInBinary=-764832622 add=444
Советы по подчеркиванию в числовых литералах
- Подчеркивания можно ставить только между цифрами.
- Вы не можете ставить знаки подчеркивания рядом с десятичными знаками, суффиксом L/F или префиксом основания. Таким образом, 3._14, 110_L, 0x_123 являются недопустимыми и приведут к ошибке компиляции.
- Между цифрами допускается несколько знаков подчеркивания, поэтому 12___3 является допустимым числом.
- Вы не можете ставить подчеркивания в конце буквального. Таким образом, 123_ является недопустимым и вызывает ошибку во время компиляции.
- Когда вы ставите подчеркивание перед числовым литералом, оно рассматривается как идентификатор, а не как числовой литерал. Так что не путайте с этим.
- Вы не можете использовать подчеркивания там, где вы ожидаете строку с цифрами. Например
Integer.parseInt("12_3");вызоветисключение java.lang.NumberFormatException.