1
resposta

[Dúvida] Símbolo underline para números

Boa tarde! Não entendi da onde tirou o underline para números.

Obrigado, Henrique Ribeiro Siqueira

1 resposta

Em Java, desde a versão 7, é permitido o uso do caractere de sublinhado (_) para separar dígitos em valores numéricos literais. Isso ajuda a melhorar a legibilidade de números longos, como grandes números inteiros ou valores de ponto flutuante, ao permitir que você os formate de uma maneira mais intuitiva, semelhante à forma como você usaria vírgulas ou espaços para agrupar dígitos em números grandes.

Aqui estão alguns exemplos de como usar sublinhados em números literais:

Inteiros

Você pode usar sublinhados em qualquer lugar entre os dígitos de um número inteiro:

public class UnderlineExample {
    public static void main(String[] args) {
        int num1 = 1_000_000; // 1 milhão
        int num2 = 0b1010_1011_1100_1101; // Binário: 1010101111001101
        int num3 = 0xAB_CD_EF; // Hexadecimal: ABCDEF

        System.out.println("num1: " + num1);
        System.out.println("num2: " + num2);
        System.out.println("num3: " + num3);
    }
}

Números de Ponto Flutuante

Você também pode usar sublinhados em números de ponto flutuante:

public class FloatingPointExample {
    public static void main(String[] args) {
        double num1 = 3.141_592_653_589_793; // Valor de Pi
        float num2 = 1_234.56_78F; // Número flutuante com sublinhados

        System.out.println("num1: " + num1);
        System.out.println("num2: " + num2);
    }
}

Regras e Restrições

  1. Posição dos Sublinhados:
    • Não podem estar no início ou no final do número.
    • Não podem estar imediatamente após um sinal de ponto (.) em um literal de ponto flutuante.
    • Não podem estar imediatamente antes de um L em um literal longo (long).
    • Não podem estar imediatamente após 0x ou 0b em literais hexadecimal e binário, respectivamente.

Exemplos Inválidos

Estes exemplos gerariam erros de compilação:

int invalid1 = _1000;      // Inválido: começa com sublinhado
int invalid2 = 1000_;      // Inválido: termina com sublinhado
float invalid3 = 1_.23F;   // Inválido: sublinhado após ponto decimal
long invalid4 = 1000_L;    // Inválido: sublinhado antes do L
int invalid5 = 0x_1A;      // Inválido: sublinhado após 0x
int invalid6 = 0b_1101;    // Inválido: sublinhado após 0b

Vantagens

  1. Legibilidade: Facilita a leitura de números grandes, tornando-os mais fáceis de entender.
  2. Manutenção: Torna o código mais fácil de manter, já que os números são visualmente separados em grupos significativos.

Conclusão

O uso de sublinhados em literais numéricos é uma prática recomendada quando você trabalha com números grandes, pois melhora a clareza e a legibilidade do seu código. Aqui está um exemplo final que combina todos os conceitos discutidos:

public class UnderlineNumberExample {
    public static void main(String[] args) {
        int largeNumber = 123_456_789;
        double preciseNumber = 3.14_15_92_65_35_89_79;
        long creditCardNumber = 1234_5678_9012_3456L;
        
        System.out.println("Large Number: " + largeNumber);
        System.out.println("Precise Number: " + preciseNumber);
        System.out.println("Credit Card Number: " + creditCardNumber);
    }
}

Espero que isso esclareça o uso do sublinhado em números em Java! Se tiver mais dúvidas, estou à disposição para ajudar.