[JAVA] printf() 문자열 포맷 알아보기
오늘은 Java에서 printf() 함수를 사용할 때 %로 시작하는 키워드에 대한 문자열 출력 포맷에 대하여 정리하는 포스팅을 준비했습니다.
많은 분들이 알고 계시고 자주 사용하는 %d, %s에서 부터 잘 사용하진 않지만 그래도 한번쯤 이런것이 있다하고 알아두면 언젠가 한번쯤 써먹게 될 만한 %x(16진수표현)에 대하여 정리를 해 보았습니다.
이번 포스팅은 개념보다는 정리 차원의 포스팅이니 가볍게 읽어 나가셔도 될것 같습니다.
여러분들도 다 알고 계시고 자주 사용하는 printf()와 %s를 사용하여 아래와 같이 출력을 표현할 수 가 있죠.
String str = "World!";
System.out.printf("Hello %s", str);
위와 같은 소스코드를 실행해보면 %s가 str의 변수에 들어 있는 "World!" 문자로 치환되어 결과는 아래와 같이 표시되는 것을 알 수 있습니다.
Hello World!
혹시나 처음 보시는 분들을 위해 간단히 printf()의 함수에 대하여 설명드렸습니다.
이제 printf() 포맷에 대한 문법은 다음가 같습니다.
System.out.printf(format, arguments);
String 출력시 왼쪽/오른쪽 맞춤으로 출력하기
System.out.printf("[%20s]%n", "Hello!"); // 숫자가 양수면 오른쪽 정렬
System.out.printf("[%-20s]%n",
"Hello!"); // 숫자가 음수면 왼쪽 정렬
[ Hello!]
[Hello! ]
// 10개의 공간을 만들고 3글자만 출력.
System.out.printf("[%10.3s]%n", "Hello!");
[ Hel]
그러면 이와 같이 10개의 빈공간을 만들고 오른쪽 정렬하여 그중 3개의 글자(.3)만 출력하라는 의미가 됩니다.Float 출력시 소수점 왼쪽/오른쪽 맞춤으로 출력하기
System.out.printf("[%10.2f]%n", 123.456); // 양수면 오른쪽 정렬
System.out.printf("[%-10.2f]%n",
123.456); // 음수면 왼쪽 정렬
[123.46 ]
[ 123.46]
다만 소수점 표현(.2) 같은 경우 전체 전체 글자 123.456에서 2글자만 출력하라는 표현이 아닌 소수점 이하 2자리까지만 표시 한다는 의미임을 주의하시기 바랍니다.
Integer 출력시 소수점 왼쪽/오른쪽 맞춤으로도 당연히 출력이 되겠죠
System.out.printf("[%10d]%n", 123); // 양수면 오른쪽 정렬
System.out.printf("[%-10d]%n",
123); // 음수면 왼쪽 정렬
[123 ]
[ 123]
시간 출력에 대한 표현식
date 객체의 현재 시간을 이용해 현재 날자와 시간을 표시하기 위해 %t를 사용합니다. 그리고 그 다음에 오는 영문자는 년(y), 월(m), 일(d) 또는 시(H), 분(M), 초(S)에 대한 지시자를 이용합니다. 여기서 대소문자에 주의하세요.
Date date = new Date();
System.out.printf("%ty년 %tm월 %td일%n", date, date, date);
System.out.printf("%tH시 %tM분 %tS초%n", date, date, date);
21년 12월 24일
09시 29분 34초
그러면 요일(A)과 달(B)에 대한 영문 표현도 표시해 봅시다. 그리고 요일을 표시할 경우 대문자 A와 소문자 a가 다르다는 것에 주의하세요. 달을 표시하는 경우에는 대소문자에 대한 표현이 동일합니다.
System.out.printf("%tA %tB%n", date, date);
System.out.printf("%ta %tb%n", date, date);
금요일 12월
금 12월
여기서 주의할 점은 시스템에 따라서 요일이 한글로 표시될 수도 있고 영문으로 표시될 수도 있음을 주의하시기 바랍니다.
그리고 뒤에오는 date를 매번 반본하기 귀찮은 분들을 위해 간편한 방법을 소개합니다. 인자 선택 지시자인데요. 첫번째 인자를 의미하는 1$를 이용해 한번에 아래와 같이 표현할 수 있습니다.
System.out.printf("%1$ty년 %1$tm월 %1$td일%n", date);
21년 12월 24일
포맷에 대한 보다 상세한 내용은 아래의 사이트를 참고하시기 바랍니다.
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
댓글
댓글 쓰기