Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java String.format() 완벽 가이드 – 형식 지정자와 실전 예제

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()은 복잡한 문자열 연결 없이도 깔끔하고 읽기 쉬운 형식의 문자열을 만들 수 있는 강력한 도구입니다. 숫자 정렬, 날짜 표시, 로그 메시지 작성 등 실무에서 다양하게 활용해 보세요.