Рубрики
Без рубрики

Подчеркивания в числовых литералах – Функция Java 7

Одной из функций Java 7 является подчеркивание в числовых литералах. Вы можете поместить подчеркивания между цифрами любого числового литерала, такого как int, байт, короткий,

Автор оригинала: 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 .