java.lang.String 클래스의 format() 메서드는 형식 문자열(format string)과 인수 배열을 매개변수로 받아, 지정한 형식에 맞게 변환된 새로운 문자열을 반환합니다. C 언어의 printf()와 유사한 방식으로 동작하며, 숫자 자릿수 조절, 소수점 표시, 날짜 출력 등 다양한 상황에서 유용하게 활용할 수 있습니다.
주요 형식 지정자
- %s — 문자열(String)
- %d — 정수(int, long)
- %f — 실수(float, double)
- %c — 단일 문자(char)
- %t — 날짜 및 시간
예제 1: 날짜 형식 지정하기
다음 예제는 format() 메서드를 사용하여 날짜를 원하는 형식으로 출력하는 방법을 보여줍니다.
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String args[]) {
// GregorianCalendar 객체 생성
Calendar cal = GregorianCalendar.getInstance();
System.out.println("Date: " + cal.get(Calendar.DATE));
System.out.println("Month: " + cal.get(Calendar.MONTH));
System.out.println("Year: " + cal.get(Calendar.YEAR));
Object arr[] = { "Date", cal };
System.out.println("Desired Format:");
System.out.println(String.format("%1$s = %2$tY %2$tm %2$te", arr));
}
}
출력 결과
Date: 7 Month: 10 Year: 2020 Desired Format: Date = 2020 11 7
여기서 %2$tY %2$tm %2$te는 두 번째 인수(cal)를 연도(%tY), 월(%tm), 일(%te)로 각각 변환하라는 의미입니다. 참고로 Calendar의 MONTH 필드는 0부터 시작하므로 출력된 10은 11월을 뜻하며, 형식 지정자 %tm은 이를 실제 월인 11로 표시합니다.
예제 2: 숫자 앞에 0 채우기
다음 예제는 format() 메서드를 이용해 정수 앞에 0을 채워 일정한 자릿수로 출력하는 방법입니다.
public class Demo {
public static void main(String []args) {
int val = 1254;
String str = String.format("%07d", val);
System.out.println(str);
}
}
출력 결과
0001254
%07d에서 7은 전체 자릿수를, 앞의 0은 빈자리를 0으로 채우라는 플래그를 의미합니다. 따라서 1254가 총 7자리로 표현되면서 앞에 세 개의 0이 붙게 됩니다.
예제 3: 데이터 타입별 형식 지정자
다음 예제는 주요 데이터 타입별로 사용할 수 있는 형식 지정자를 보여줍니다.
public class Demo {
public static void main(String []args) {
String str = String.format("%d", 245);
System.out.println(str);
str = String.format("%s", "Welcome to Tutorialspoint");
System.out.println(str);
str = String.format("%f", 126.54);
System.out.println(str);
str = String.format("%c", 't');
System.out.println(str);
}
}
출력 결과
245 Welcome to Tutorialspoint 126.540000 t
%f는 기본적으로 소수점 이하 6자리까지 출력한다는 점에 유의하세요. 소수점 자릿수를 조절하고 싶다면 %.2f처럼 정밀도를 함께 지정하면 됩니다.
마무리
String.format()은 복잡한 문자열 연결 없이도 깔끔하고 읽기 쉬운 형식의 문자열을 만들 수 있는 강력한 도구입니다. 숫자 정렬, 날짜 표시, 로그 메시지 작성 등 실무에서 다양하게 활용해 보세요.