Números Binários e com underscore (Java 7)

Na versão 7 do Java, além de representar número decimais, hexadecimais e octais, podemos representar números binários e separar os dígitos com underscore (_).

Pontos importantes:

  1. O underscore não pode aparecer imediatamente após 0x, 0X , 0b ou 0B
  2. O underscore não pode aparecer antes do primeiro dígito e nem após o último dígito
  3. Um número binário começa sempre com 0B ou 0b e só aceita valores 0 e 1 (binário, duh! :D)
  4. A utilizar o P, p , E ou e para representação com expoente (binário e decimal), pode-se utilizar underscore, mas seguindo a regra 2 para o expoente.

Exemplo de números válidos:

		int n1 = 1234_5678;
		long n2 = 1_2_3_4__5_6_7_8L;
		int n3 = 0b0001_0010_0100_1000;
		double n4 = 3.141_592_653_589_793d; // PI
		double n5 = 0x1.ffff_ffff_ffff_fP1_023; // Double.MAX_VALUE

Exemplo de números inválidos

		int n6 = _1234;
		int n7 = 0x_1234;
		int n8 = 1234_;
		int n9 = 0x1.0_p_-1022;
		int n10 = 0b12;

A linha 1 quebra a regra 2, pois está iniciando com underscore. A linha 2 quebra a regra 1, pois o inderscore está logo após o 0x. A linha 3 quebra a regra 2 pois o underscore está após o último dígito. A linha 4 quebra a regra 2 e a regra 4, pois o underscore está após o último dígito e antes do primeiro do expoente. A linha 5 quebra a regra 3, pois aparece o número 2 que não faz parte dos números binários.

Essa alteração no Java 7 ajuda na legibilidade do código, principalmente para trabalhar com valores grandes (p. ex: 1_000_000_000 - um bilhão) ou com números binários.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6