long java int java-7

java - long - Subrayado entre dígitos



string java (2)

Esta pregunta ya tiene una respuesta aquí:

Por error se ha añadido un guión bajo como a continuación:

int i = 1_5;

Pero no hay error de compilación. ¿Por qué es así? La salida viene como si el guión bajo se ignora. Entonces, ¿por qué tal característica en Java?


Esa es la nueva característica, válida desde Java 7. Mejora la legibilidad de sus valores literales.

De acuerdo con OCA_Java_SE_7_Programmer_I_Certification_Guide_Exam_1Z0-803 de Mala Gupta:

Preste atención al uso de guiones bajos en los valores literales numéricos. Estas son algunas de las reglas:

1) No puede iniciar o finalizar un valor literal con un guión bajo.

2) No puede colocar un subrayado justo después de los prefijos 0b, 0B, 0x y 0X, que se utilizan para definir valores literales binarios y hexadecimales.

3) Puede colocar un guión bajo justo después del prefijo 0, que se utiliza para definir un valor literal octal.

4) No puede colocar un guión bajo antes de un sufijo L (el sufijo L se usa para marcar un valor literal como largo).

5) No puede usar un guión bajo en posiciones donde se espera una cadena de dígitos.

Ejemplos válidos:

long baseDecimal = 100_267_760; long octVal = 04_13; long hexVal = 0x10_BA_75; long binVal = 0b1_0000_10_11;

Ejemplos inválidos:

int intLiteral = _100; int intLiteral2 = 100_999_; long longLiteral = 100_L;


Ver subrayados en los literales numéricos :

En Java SE 7 y versiones posteriores, cualquier número de caracteres de subrayado (_) puede aparecer en cualquier lugar entre los dígitos en un literal numérico. Esta función le permite, por ejemplo, separar grupos de dígitos en literales numéricos, lo que puede mejorar la legibilidad de su código.

No dio un buen ejemplo ya que 15 es legible incluso sin separar los dígitos a 1_5 . Pero tome, por ejemplo, el número: 100000000000, es difícil saber qué es sin contar los dígitos, por lo que puede hacer:

100_000_000_000

lo que hace que sea más fácil identificar el número.

En tu ejemplo, prueba:

int i = 1_5; System.out.println(i); //Prints 15