[JAVA / 자바] System.out.printf()로 포맷 출력
java에서 출력하는 대표적인 함수는 System.out.print()를 들 수 있습니다.
그러나, 출력 서식을 지정하고 싶을 때는 System.out.printf()를 사용합니다.
System.out.printf("출력 서식", 출력할 내용);
위와 같이 System.out.printf() 함수를 사용하게 되는데 이때 출력할 내용은 출력 서식 안에 있는 지시자의 위치로 들어가게 됩니다.
이때, 지시자는 출력할 내용의 형에 따라 다르게 되는데 그 내용은 다음과 같습니다.
지시자 | 출력 |
%n ( = \n) | 줄바꿈 |
%d | Integer 형식 |
%f | Float 형식 |
%c ( = %C) | char 형식 |
%s OR %S | String 형식(소문자, 대문자) |
%b OR %B | boolean 형식(소문자, 대문자) |
%x OR %X | 16진수 Integer 형식(소문자, 대문자) |
%o | 8진수 Integer 형식 |
%e ( = %E) | 지수 형식 |
%t | date, time 형식 |
%n : 줄 바꿈 출력 예제
위와 같은 경우는 System.out.println();이나 System.out.printf("\n);과 역할이 같다. 따라서 System.out.printf() 함수를 사용하는데 줄 바꿈이 필요할 때 해당 지시자를 사용하면 된다.
System.out.printf("%n");
출력
// 줄바꿈
%d : Integer 형식 출력 예제
System.out.printf("%d", 3);
System.out.printf(" %d%n", 3);
System.out.printf("연필 %d개", 3);
출력
3 3
연필 3개
%f : Float 형식 출력 예제
%와 f사이에 출력하기 원하는 '. 소수점의 개수'를 적어주면 그만큼의 소수점 이하의 숫자가 출력이 되고, 만약 적지 않을 시 소수점 6자리까지 출력이 된다.
System.out.printf("%f\n", 3.14);
System.out.printf("%f\n", 3.14159265);
System.out.printf("%.2f\n", 3.14159265);
System.out.printf("%.8f\n", 3.14159265);
출력
3.140000
3.141593
3.14
3.14159265
%c : Char 형식 출력 예제
지시어로 %c, %C 모두 올 수 있고, 출력했을 때 동일하게 출력이 된다.
System.out.printf("%c %C", 65, 65);
출력
A A
%s : String 형식 출력 예제
지시어로 %s를 사용하면 출력할 내용 그대로 출력이 되지만, %S를 사용하면 출력할 내용이 모두 대문자로 전환되어 출력된다.
System.out.printf("%s\n", "Hello, World");
System.out.printf("%S\n", "Hello, World");
출력
Hello, World
HELLO, WORLD
이때, % 와 s(S) 사이에 숫자를 넣으면 그 크기만큼 정렬이 된다. 사이에 양의 정수 값이 들어가면 해당 숫자만큼의 공간에 우측 정렬이 되고, 음의 정수 값이 들어가면 좌측 정렬이 된다. (단, 출력할 글자 수보다 사이에 들어가는 정수의 절댓값이 작으면 출력 형식이 변하지 않는다.)
System.out.printf("\"%10s\"\n", "Hello, World");
System.out.printf("\"%15s\"\n", "Hello, World");
System.out.printf("\"%-15s\"\n", "Hello, World");
출력
"Hello, World"
" Hello, World"
"Hello, World "
%b : Boolean 출력 예제
지시어로 %d를 사용하면 소문자로, %D를 사용하면 대문자로 출력된다.
System.out.printf("%b\n", true);
System.out.printf("%B\n", true);
System.out.printf("%b\n", false);
System.out.printf("%B\n", false);
System.out.printf("%b\n", null);
System.out.printf("%B\n", null);
출력
true
TRUE
false
FALSE
false
FALSE
%x : 16진수 Integer 출력 예제
지시어로 %x를 사용하면 소문자로, %X를 사용하면 대문자로 출력된다.
System.out.printf("%x %X", 31, 31);
출력
1f 1F
%o : 8진수 Integer 출력 예제
System.out.printf("%o", 31);
출력
37
%e : 지수 형식 출력 예제
지시어로 %e를 사용하면 소문자로, %E를 사용하면 대문자로 출력된다.
System.out.printf("%e\n", 3.141592);
System.out.printf("%E\n", 3141592.0);
출력
3.141592e+00
3.141592E+06
%t : date, time 출력 예제
%tY | 년도 | %ty | 년도(뒤 두자리) |
%tB | 달 | %tb | 월(영문 약자) |
%te | 일 | %td | 일(두자리 서식) |
%tA | 요일 | %ta | 요일(영문 약자) |
%tH | 시(두자리 서식, 24시간) | %tk | 시(24시간) |
%tM | 분(두자리 서식) | %tI | 시(두자리 서식, 12시간) |
%tS | 초(두자리 서식) | %tl | 시(12시간) |
%Tp | AM / PM | %tp | am / pm |
Date date = new Date();
System.out.printf("%tY년 %tB %te일 %tA\n", date, date, date, date);
System.out.printf("%tH시 %tM분 %tS초\n", date, date, date);
System.out.printf("%tp %tI:%tM\n", date, date, date);
System.out.printf("%Tp %tl:%tM\n", date, date, date);
출력
// 현재시간 2021년 12월 2일 목요일, 00시 08분 25초
2021년 December 2일 Thursday
00시 08분 25초
pm 00:08
PM 0:08
이때, %와 t(T)사이에 1$를 모두 써주면 인자를 한 번만 사용해도 된다.
System.out.printf("%1$tH시 %1$tM분 %1$tS초\n", date);
출력
00시 08분 25초