티스토리 뷰

숫자에 underbar가 있는것을 보았다. 이게 뭐지.. 하고 찾아보니 아래와 같았다.

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)의 사이나 뒤에는 불가능하다"


출처: https://countryxide.tistory.com/52 [배워서 남주자]

'ocajp 자격증 (Oracle Certified Associate Ja' 카테고리의 다른 글

자바 실수 Float  (0) 2020.03.03
ocjap 문제 해설 - Float74  (0) 2020.03.03
ocjap 문제 해설 - String toString()  (0) 2020.03.03
자바 String toString()  (0) 2020.03.03
ocjap 문제 해설 - extends 76  (0) 2020.03.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함