Open In App
Related Articles

Using underscore in Numeric Literals in Java

Like Article
Save Article
Report issue

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. Do remember there are certain places where we can not place underscores as listed below as follows:

  • At the beginning or end of a number
  • Adjacent to a decimal point in a floating-point literal
  • Prior to an F or L suffix
  • In positions where a string of digits is expected
  • We can use underscore symbols only between the digits if we are using else we will get a compile-time error.

Let us discuss illustrations in order to justify the above said as follows:

Illustration 1: Valid usage of underscore in numeric literals  

Input  : int i = 12_34_56; 
Output : 123456

Input  : double db = 1_2_3.4_5_6
Output : 123.456

Illustration 2: Invalid usage in numeric literals 

int i = _12345; // Invalid as this is an identifier, not a numeric literal
double db = 123._456; // Invalid as we cannot put underscores adjacent to a decimal point
double db 123_.456_; // Invalid as we cannot put underscores at the end of a number 

Now geek you must be wondering out why it was introduced so basically the main advantage of this approach is the readability of the code will be improved. At the time of compilation, these underscore symbols will be removed automatically. We can use more than one underscore symbol also between the digits too. For example, the following is a valid numeric literal as shown below:

int x4 = 5_______2;        // OK (decimal literal)

Implementation: Make sure before writing code we do have java version 1.7 and onwards as discussed in header itself. In order to check, open terminal and write below command and if not so install latest java version and we are good to go if already updated. 

java -version  



// Java program to illustrate
// using underscore in Numeric Literals
// Main class
// UnderScoreSymbols
class GFG {
    // Main driver method
    public static void main(String[] args)
        // Declaring and initializing numeric literals
        int i = 12_34_5_6;
        double db = 1_23.45_6;
        // Literal with underscore
        int x4 = 5_______2;
        // Simply printing and displaying above literals
        System.out.println("i = " + i);
        System.out.println("db = " + db);
        System.out.println("x4 = " + x4);


i = 123456
db = 123.456
x4 = 52

Last Updated : 13 Jul, 2022
Like Article
Save Article
Share your thoughts in the comments
Similar Reads