https://kdhyo98.tistory.com/27
문자열의 형식을 원하는대로 표현해주는 메소드로 유용하게 사용되고 있다.
모든 인수 적용 가능(ex - stirng, int, Integer, Boolean ...)
- %b (인수가 null이면 false 아니면 true 반환 / Boolean)
- %h (인수가 null이면 null 아니면 16진수 반환 / Integer.toHexString)
- %s (인수가 null이면 null 아니면 문자열 반환 / toString())
숫자 (char, Character, byte, Byte, short, Short, int, Integer)
- %c (char, byte, short ... 을 받아 유니코드로 반환)
정수 (byte, Byte, short, Short, int, Integer, long, Long, BigInteger)
- %d (10진수 정수 반환)
- %o (8진수 정수 반환)
- %x (16진수 정수 반환)
실수 (float, Float, double, Double, BigDecimal)
- %e (컴퓨터 과학 표기법으로 10진수로 형식화)
- %f (10진수 실수 반환)
- %g (반올림 후 정밀도와 값에 따라 컴퓨터화 된 과학적 표기법 또는 10진수 실수로 반환)
- %a (유효 숫자와 지수가 있는 16진수 부동 소수점 숫자로 형식화)
날짜 시간
- %t (날짜 및 시간)
백분율
- % (퍼센트 리터럴)
개행
- n (줄 구분 기호 반환)
결과는 모두 String으로 반환이 됩니다.
시간
H - 00 ~ 23 (필요에 따라 앞에 0을 포함한 24시간 표시)
I - 01 ~ 12 (필요에 따라 앞에 0을 포함한 12시간 표시)
k - 24시간 시계의 시간 0 ~ 23
l - 12시간 시계의 시간 1 ~ 12
M - 00 ~ 59 (필요에 따라 앞에 0을 포함한 분)
S - 00 ~ 60 (필요에 따라 앞에 0을 포함한 초)
L - 000 ~ 999 (필요에 따라 앞에 0을 포함한 3자리 밀리 초)
N - 000000000 ~ 999999999 (필요에 따라 앞에 0을 포함한 9자리 나노초)
p - am or pm
z - ex) -0800 (GMT에서 RFC 822 스타일 숫자 시간대 오프셋)
Z - 시간대의 약자를 표시하는 문자열
s - 초는 시대의 시작 1월 1일 1970년 시작 이후 00:00:00 UTC
Q - 밀리 초는 시대의 시작 1월 1일 1970년 시작 이후 00:00:00 UTC
날짜
B - January, February (전체 월 이름)
b - Jan, Feb (약자 월 이름)
h - b와 동일
A - Sunday, Monday (전체 요일 이름)
a - Sun, Mon (약자 요일 이름)
C - 00 ~ 99 (4자리 연도를 나누어 필요에 따라 앞에 0이 있는 2자리 형식)
Y - 2021 (연도 4자리)
y - 21 (연도 2자리)
j - 001 ~ 366 (날짜 Day of Year)
m - 01 ~ 13 (월)
d - 01 ~ 31 (일 필요에 따라 앞에 0표시)
e - 1 ~ 31 (일)
%[argument_index$][flags][width]conversion
필수 값 - %, conversion
옵션 값 - argument_index$, flags, width
- 아라비아 숫자와 $ 문자를 결합하여 사용 ex) 1$ 2$ 3$
- 앞에 숫자에 따라 몇 번째 인수를 받을 지 지정가능
- ex) String.format("%3$ - %2$ - %1$", "세번째", "두번째", "첫번째");
- '<'를 사용하면 직전의 인수를 사용할 수 있음
'-'를 사용하면 왼쪽으로 정렬 빼면 오른쪽으로 정렬
',' 를 사용하면 콤마가 포함된 숫자
문자열의 길이를 지정
위에서 설명한 데이터타입들을 사용
Stirng a = "첫번째";
String b = "두번째";
int c = 30000;
LocalDateTime now = LocalDate.now();
String.format("%s-%s", a, b); // 첫번째-두번째
String.format("%,d", c); // 30,000
String.format("%B - %b", a, b); // True, true
String.format("%tY년 %<tm월 %<td일 %<tH시 %<tM분 %<tS초", now); // 2021년 01월 17일 22시 19분 47초