Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How Numeric literal with underscore works in java and why it was added as part of jdk 1.7 [duplicate]

Tags:

java

java-7

Can somebody please explain to me why this feature was added in JDK 7 and how it works?

While going through the new features of JDK 7, I found following code.

int i;
//Java 7 allows underscore in integer
i=3455_11_11;
like image 337
Dark Knight Avatar asked Nov 06 '13 07:11

Dark Knight


People also ask

What does underscore number mean in Java?

In Java SE 7 and later, any number of underscore characters ( _ ) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

What is numeric literal in Java?

An exact numeric literal is a numeric value without a decimal point, such as 65,– 233, and +12. Using the Java integer syntax, exact numeric literals support numbers in the range of a Java long. An approximate numeric literal is a numeric value in scientific notation, such as 57.,– 85.7, and +2.1.

How do you write an underscore in Java?

When Java was introduced, use of underscore in numeric literals was not allowed but from java version 1.7 onwards we can use '_' underscore symbols between digits of numeric literals. You can place underscores only between digits.

Which of the following options the usage of underscore character is incorrect?

You cannot use underscore in positions where a string of digits is expected.


3 Answers

This is used to group the digits in your numeric (say for example for credit card etc)

From Oracle Website:

In Java SE 7 and later, any number of underscore characters (_) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

For instance, if your code contains numbers with many digits, you can use an underscore character to separate digits in groups of three, similar to how you would use a punctuation mark like a comma, or a space, as a separator.

To conclude, it's just for a sake of readability.

like image 72
Pradeep Simha Avatar answered Oct 22 '22 15:10

Pradeep Simha


See Underscores in Numeric Literals:

In Java SE 7 and later, any number of underscore characters (_) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

Try this:

int num = 111_222;
System.out.println(num); //Prints 111222

This feature was added due to the fact that long numbers can be hard to read sometimes, so instead of counting how many "zeros" a number has to figure out if it's a million or one hundred thousand, you can do:

int myNum = 1_000_000;

Now it's easy to see that there is two groups of 3 zeros, and clearly the number is million. Compare it with:

int myNum = 1000000;

Admit.. here you had to count each zero..

like image 49
Maroun Avatar answered Oct 22 '22 14:10

Maroun


JDK 7 _ for numeric literals feature is only for the sake of readability. As per docs:

In Java SE 7 and later, any number of underscore characters (_) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

like image 7
Juned Ahsan Avatar answered Oct 22 '22 15:10

Juned Ahsan