ABOUT ME

IT 블로그

Today
Yesterday
Total
  • [Java7] 자바 숫자 _(언더바) 표현
    Java/기본 2017. 7. 9. 21:12
    728x90
    반응형

    Oracle Java docs: Underscores in Numeric Literals

     

    자바 8 인 액션을 보다가 숫자와 _(언더스코어)를 섞어서 쓰는 것을 처음 보았다. int a = 10_000_000; 이런 식인 것이다.

     

    자바7 이후 버전부터 _는 숫자 리터럴의 어디에도 등장할 수 있다. 이로 인해 숫자를 끊어 읽을 수 있게 되어 가독성을 향상 시킬 수 있다. 예를들어 int myMoneyWon = 180000000라고 할 때, 한번에 얼마인지 파악하기 힘들다. 하지만 int myMoneyWon = 180_000_000라고쓴다면 (한국인의 경우) 몇 원인지 파악하기 쉽다.

     

    하지만 마음대로 숫자와 섞어 쓸수는 없다. _는 숫자 사이에만 올 수 있다. 아래와 같은 곳에는 위치할 수 없다.

    • 숫자의 처음이나 끝
    • 소수점 앞,뒤
    • F나 L의 앞
    • In positions where a string of digits is expected (정확한 해석이 필요하다... 8진수나 16진를 나타내는 문자위치가 아닌가 싶다)

    아래 예제를 살펴보자

     

    float pi1 = 3_.1415F; // 안됨; .의 앞에 위치
    float pi2 = 3._1415F; // 안됨; .의 뒤에 위치
    long socialSecurityNumber1
    = 999_99_9999_L; // 안됨; L의 앞에 위치
    int x1 = _52; // 숫자 표현이 아님 (_로 시작하는 것은 변수명이 됨)
    int x2 = 5_2; // 가능
    int x3 = 52_; // 안됨; 숫자의 끝에 위치
    int x4 = 5_______2; // 가능
    int x5 = 0_x52; // 안됨; 16진수를 나타내는 0x사이에는 불가능
    int x6 = 0x_52; // 안됨; 숫자의 시작에 위치
    int x7 = 0x5_2; // 가능 (16진수)
    int x8 = 0x52_; // 안됨; 숫자의 끝에 위치
    int x9 = 0_52; // 가능 (8진수)
    int x10 = 05_2; // 가능 (8진수)
    int x11 = 052_; // 안됨; 숫자의 끝에 위치

     

     

    간단히 한문장으로 정리하자면 "숫자 사이에만 가능하고(숫자의 처음이나 끝에는 안됨), 소수점(.)이나 float과 long 표시 접미사(F, L), 그리고 진수 표현(0, 0x)의 사이나 뒤에는 불가능하다"

     

     

     

    출처 : Oracle Java docs(Underscores in Numeric Literals)

    반응형

    'Java > 기본' 카테고리의 다른 글

    Reflection 리플렉션  (0) 2018.01.21
    [Java9] 자바9 설치  (1) 2017.09.23
    [Java7] readAllLines  (0) 2017.02.09
    [Java8] String.join  (0) 2017.01.21
    [Java7] try-with-resources  (0) 2016.07.21

    댓글

Designed by Tistory.