-
[Java7] 자바 숫자 _(언더바) 표현Java/기본 2017. 7. 9. 21:12728x90반응형
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진를 나타내는 문자위치가 아닌가 싶다)
아래 예제를 살펴보자
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersfloat 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)의 사이나 뒤에는 불가능하다"
반응형'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