[Java] Format 클래스

Bam·2024년 3월 11일
0

Java

목록 보기
56/98
post-thumbnail

Format 클래스

Format은 틀, 형식을 의미하는 단어입니다. 예를들어 숫자 1000000보다는 1,000,000이라는 형식이 있는 형태가 한 눈에 들어오죠?

Format 클래스는 문자열, 숫자, 날짜, 메세지 등에 형식을 붙여서 보기 편한 상태로 바꿔주는 기능을 제공하고 있습니다. Format 클래스 자체는 추상클래스고 원하는 형식의 포맷 클래스를 불러와서 사용하는 방식으로 사용합니다. 자식클래스로 몇가지가 있긴한데, 자주 사용되는 10진수 포맷과 날짜 포맷 클래스만 여기서 짚어보고 넘어가겠습니다.


DecimalFormat 클래스

DecimalFormat 클래스는 10진수의 형식 문자열 변환을 수행하는 클래스입니다.

Format의 자식 클래스는 아니고, Format의 자식 클래스인 Number 클래스의 자식 클래스입니다.

사용법은 DecimalFormat 객체를 생성하고 생성자로 원하는 포맷을 전달해줍니다. 이때 포맷은 기호를 이용해서 전달하는데 사용할 수 있는 기호는 다음과 같습니다.

기호설명
010진수 출력, 빈자리를 0으로 채움
#10진수 출력, 빈자리 채우지 않음
.소수점
+ -양수, 음수 표시
,단위 구분 쉼표
E지수 E 표시
;패턴 구분자
%%기호 표시

이렇게 생성한 포맷은 format() 메소드의 인수로 형식화할 데이터를 전달합니다.

설명만으로는 좀 아리까리한 내용이 있을텐데 그것들은 아래 예제코드를 통해 직접 눈으로 확인해보도록 하겠습니다.

public class Main {
    public static void main(String[] args) {
        double n = 1234.5678;

        DecimalFormat df;

        df = new DecimalFormat("00000.00000");	//정수 5자리, 소수점 5자리 표시, 빈자리는 0으로 채움
        System.out.println(df.format(n));

        df = new DecimalFormat("#.#");	//소수점 1자리까지 표시
        System.out.println(df.format(n));

        df = new DecimalFormat("+###.###;-###.###");	//양수면 +기호 붙이고, 음수면 -기호 붙이기
        System.out.println(df.format(n));

        df = new DecimalFormat("#,###.####");	//정수 3번째 자리에 쉼표 붙이기
        System.out.println(df.format(n));
    }
}


SimpleDateFormat

우리나라는 날짜를 년/월/일의 순서로 표기합니다. 그런데 미국은 월/일/년, 영국은 일/월/년의 형태로 날짜를 표기합니다. 이처럼 각 지역마다 다 다른 형태로 날짜 형식을 사용하는데요. 날짜 객체로부터 날짜 정보를 받아 원하는 형식으로 날짜 정보를 출력하기 위해 SimpleDateFormat 클래스를 사용합니다.

사용법은 SimpleDecimal과 동일합니다. SimpleDateFormat 클래스에서 포맷으로 전달하는 기호들은 다음과 같습니다.

기호설명기호설명
yh시 - 12시간제
MH시 - 24시간제
dk시 - 1 ~ 24
D월 없는 일 (1 ~ 365)K시 - 0 ~ 11
E요일m
a오전 오후s
w년의 몇 번째 주S밀리초 (1/1000초)
W월의 몇 번째 주

h는 12시간제 시간이고, H는 24시간제 시간입니다.
k는 반대로 소문자가 24시간제고 대문자 K가 12시간제입니다.

public class Main {
    public static void main(String[] args) {
        Date date = new Date();

        SimpleDateFormat sdf;

        sdf = new SimpleDateFormat("yyyy년 MM월 dd일. HH시 mm분 ss초");
        System.out.println(sdf.format(date));
    }
}


MessageFormat

MessageFormat 클래스는 데이터를 지정한 형식에 맞춰 출력하도록 해주는 클래스입니다. 원하는 형식을 지정하면 특정 데이터(들)를 원하는 형식에 맞춰서 출력할 수 있습니다.

public class Main {
    public static void main(String[] args) {
        String msg = "이름: {0}, 휴대폰번호: {1}, 나이: {2}";

        Object[][] datas = {
                {"김닭", "010-1234-5678", "22"},
                {"박오리", "010-8765-4321", "24"}
        };

        for (int i = 0; i < datas.length; i++) {
            String result = MessageFormat.format(msg, datas[i]);
            System.out.println(result);
        }
    }
}

0개의 댓글