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

Java printf() 메서드로 서식이 지정된 텍스트 출력하기

Java에서 printf() 메서드를 사용하면 java.io.PrintStream 또는 java.io.PrintWriter에 서식이 지정된(formatting) 출력을 손쉽게 작성할 수 있습니다. 특히 이 두 클래스에는 동일한 기능을 수행하는 format() 메서드도 함께 제공되므로, 여기서 소개하는 printf()의 사용법은 그대로 format() 메서드에도 적용할 수 있습니다.

기본 문법

System.out.printf("형식 문자열" [, 인수1, 인수2, ... ]);

형식 문자열 안에는 %로 시작하는 형식 지정자(format specifier)를 넣어 데이터가 출력될 위치와 모양을 지정합니다. 대표적인 형식 지정자는 다음과 같습니다.

  • %d : 10진수 정수
  • %o : 8진수 정수
  • %x : 16진수 정수
  • %f : 부동소수점 숫자
  • %s : 문자열
  • %n 또는 \n : 줄바꿈

예제 1: 진법 변환과 문자열 폭 지정

import java.io.PrintStream;
public class PrintfTest1 {
    public static void main(String[] args) {
        int i = 1234;
        System.out.printf("Decimal: %1$,d Octal: %1$o Hex: %1$x"\n, i);
        String str = "Tutorials Point";
        System.out.printf("%15s", str);
    }
}

실행 결과

Decimal: 1,234 Octal: 2322 Hex: 4d2
Tutorials Point

위 예제에서 %1$,d, %1$o, %1$x처럼 1$를 붙이면 첫 번째 인수(i)를 반복해서 참조합니다. 쉼표(,) 플래그는 천 단위 구분 기호를 추가하고, 각각 10진수, 8진수, 16진수로 변환하여 출력합니다. 또한 %15s는 문자열을 폭 15칸 안에서 오른쪽 정렬하여 출력합니다.

예제 2: format() 메서드와 왼쪽 정렬

public class PrintfTest2 {
    public static void main(String[] args) {
        String name = "Adithya";
        int age = 30;
        System.out.format("%-10s - %4d\n", name, age);
    }
}

실행 결과

Adithya     -    30

이번 예제에서는 format() 메서드를 사용했습니다. %-10s에서 하이픈(-) 플래그는 문자열을 폭 10칸 안에서 왼쪽 정렬하라는 의미이며, %4d는 정수를 폭 4칸 안에서 오른쪽 정렬하여 출력합니다. 이처럼 폭(width)과 정렬 옵션을 조합하면 표 형태의 깔끔한 콘솔 출력을 만들 수 있습니다.

정리

printf()format() 메서드는 C 언어 스타일의 형식 지정자를 활용해 가독성 높은 출력을 제공합니다. 진법 변환, 천 단위 구분 기호, 문자열 폭 조절, 좌우 정렬 등 다양한 옵션을 익혀두면 로그나 보고서 형태의 출력을 작성할 때 큰 도움이 됩니다.