String.format()
%
를 붙여 문자열에 사용하면 그 위치에 변수의 값을 형식화 하여 대입 가능하다.String.toUpperCase()
메소드를 호출한 결과와 동일)다음은 format에 지정할 수 있는 주요 서식을 나타낸 표이다. %
문자와 함께 조합하여 사용한다.
서식 | 분류 | 설명 |
---|---|---|
'b', 'B' | 참 거짓 | boolean 값 지정 |
'h', 'H' | 16진수 | 16진수 지정 |
's', 'S' | 문자열 | 문자열 지정 |
'c', 'C' | 문자 | 문자 지정 |
'd' | 정수 | 10진 정수로 표시 |
'o' | 정수 | 8진 정수로 표시 |
'x', 'X' | 정수 | 16진 정수로 표시 |
'e', 'E' | 부동 소수점 | 10진수(가수와 진수)로 표시 |
'f' | 부동 소수점 | 10진수로 표시 |
'g', 'G' | 부동 소수점 | 10진수(반올림)로 표시 |
'a', 'A' | 부동 소수점 | 16진수(가수와 진수)로 표시 |
't', 'T' | 날짜, 시간 | 날짜 및 시간 서식 문자 앞에 지정 ex) %tH, %tM, %tS, ... |
'%' | 퍼센트 | 퍼센트 표시 |
'n' | 줄 구분 | 개행문자 표시 |
서식 | 분류 | 설명 | 비고 |
---|---|---|---|
'H' | 시간 | 24시간 형식의 시(00-23) | |
'I' | 시간 | 12시간 형식의 시(01-12) | 대문자 |
'k' | 시간 | 24시간 형식의 시(0-23) | |
'l' | 시간 | 12시간 형식의 시(1-12) | 소문자 |
'M' | 시간 | 분(00-59) | |
'S' | 시간 | 분초(00-60) | |
'L' | 시간 | 밀리초(000-999) | |
'N' | 시간 | 나노초(000000000-999999999) | |
'z' | 시간 | UTC 오프셋 | • 출력 : "+HHMM" 또는 "-HHMM"(문자열) ▪ + : GMT 동쪽, - : GMT 서쪽 ▪ HH : 시간, MM : 분 |
'Z' | 시간 | 시간대명 | |
's' | 시간 | 1970년 1월 1일 시작 이후 초(00:00:00) | |
'Q' | 시간 | 1970년 1월 1일 시작 이후 밀리초(00:00:00) | |
'B' | 날짜 | 국가 고유의 전체 월명 ex) January, Februry, ... | |
'b', 'h' | 날짜 | 국가 고유의 축약 월명 ex) Jan, Feb, ... | |
'A' | 날짜 | 국가 고유의 전체 요일명 ex) Sunday, Monday, ... | |
'a' | 날짜 | 국가 고유의 축약 요일명 ex) Sun, Mon, ... | |
'C' | 날짜 | 세기 수(00-99) | 연도를 100으로 나누고 정수로 자름 |
'Y' | 날짜 | 년(4자리) | 음수 가능 |
'y' | 날짜 | 년(2자리, 00-99) | |
'j' | 날짜 | 연도의 일(001-366) | |
'm' | 날짜 | 월(01-12) | |
'd' | 날짜 | 월의 일(01-31) | |
'e' | 날짜 | 월의 일(1-31) | |
'R' | 날짜/시간 | 초가 없는 24시간 형식 | %H:%M과 동일 |
'T' | 날짜/시간 | 초가 있는 24시간 형식 | %H:%M:%S와 동일 |
'r' | 날짜/시간 | 국가 고유의 AM/PM 형식 시간 | 국가 고유의 시간 형식을 사용할 수 없는 경우, 디폴트는 POSIX 시간 AM/PM 형식 (%I:%M:%S %p) |
'D' | 날짜/시간 | 날짜 형식 | %m/%d/%y와 동일 |
'F' | 날짜/시간 | ISO 날짜 형식 | %Y-%m-%d와 동일 |
'c' | 날짜/시간 | 국가 고유 형식의 날짜/시간 ex) %ta %tb %td %tT %tZ %tY → Sun Jul 20 16:17:00 EDT 1969 |
아라비아 숫자
와 $
문자로 구성(첫 번째 인수 1$
, 두 번째 인수 2$
, ...)<
플래그를 사용하면 이전 형식 지정자에 대한 인수를 재사용 할 수 있다.import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
String str = "StringFormatExample";
boolean bool = true;
int n = 1234;
LocalDateTime now = LocalDateTime.now();
String result = String.format("문자열 서식: %s, %S", str, str);
System.out.println(result);
result = String.format("boolean 서식 문자열: %B, %b", bool, bool);
System.out.println(result);
result = String.format("정수 서식: %d, %o, %x, %05d", n, n, n, n);
System.out.println(result); // %05d → 5자리수, 공백을 0으로 채움
result = String.format("부동 소수점 서식: %4$e, %3$f, %2$g, %1$a", 1234.01, 1234.02, 1234.03, 1234.04);
System.out.println(result); // %숫자$ 로 절대 인수 인덱스 지정
result = String.format("날짜/시간 서식: %tY년 %<tm월 %<td일 %<tH시 %<tM분 %<tS초", now);
System.out.println(result); // $< 로 상대 인덱스 지정하여 직전의 인수와 같은 인덱스를 이용
}
}
문자열 서식: StringFormatExample, STRINGFORMATEXAMPLE
boolean 서식 문자열: TRUE, true
정수 서식: 1234, 2322, 4d2, 01234
부동 소수점 서식: 1.234040e+03, 1234.030000, 1234.02, 0x1.3480a3d70a3d7p10
날짜/시간 서식: 2021년 04월 09일 16시 21분 33초
📚 참고