본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]/9. 기본 API 클래스

15. Java 자바 [API] - Format 클래스

Format 클래스는 원하는 문자열로 조합하는 과정을 쉽게 해준다.

 

java.text 패키지에 포함되어 있고, 다양한 클래스들을 제공한다.

 

 

1. 숫자 형식 클래스 DecimalFormat

 

DecimalFormat 은 숫자 데이터를 원하는 형식으로 표현하기 위해 사용된다.

 

기호

의미

패턴 예시

1234567.89 변환 결과

0

10 진수(빈자리는 0으로 채움)

0

0.0

0000000000.00000

1234568

1234567.9

0001234567.89000

#

10 진수(빈자리는 채우지 않음)

#

#.#

##########.#####

1234568

1234567.9

1234567.89

.

소수점

#.0

1234567.9

-

음수 기호

+#.0

-#.0

+1234567.9

-1234567.9

,

단위 구분

#,###,0

1,234,567,9

E

지수 문자

0.0E0

1.2E6

;

양수와 음수의 패턴을 모두 기술할 경우,
패턴 구분자

+#,### ; -#,###

+1,234,568(양수일 때)

-1,234,568(음수일 때)

%

100을 곱한 후에 % 문자를 붙임

#.#%

123456789%

\u00A4

통화 기호

\u00A4 #,###

\ 1,234,568

 

적용할 패턴을 선택했다면, DecimalFormat 생성자 매개값으로 지정해서 객체를 생성하면 된다.

그리고 나서 format() 메소드를 호출해서 패턴이 적용된 문자열을 얻으면 된다.

 

DecimalFormat df = new DecimalFormat(“#,###.0”);

String result = df.format(1234567.89);

 

 


2. 날짜 형식 클래스 SimpleDateFormat

 

Date 클래스의 toString() 메소드는 영문으로 된 날짜를 리턴하는데, 만약 특정 문자열 포맷으로 얻으려면 java.text.SimpleDateFormat 클래스를 이용한다.

 

SimpleDateFormat의 패턴 작성에 사용되는 기호

 

패턴 문자

의미

패턴 문자

의미

y

H

시(0 ~ 23)

M

h

시(1 ~ 12)

d

K

시(0 ~ 11)

D

월 구분이 없는 일 (1 ~ 365)

k

시(1 ~ 24)

E

요일

m

a

오전 / 오후

s

w

년의 몇 번째 주

S

밀리세컨드 ( 1 / 1000 초)

W

월의 몇 번째 주

 

 

자릿수에 맞게 기호를 반복해서 작성할 수 있다. (yyyy년, MM, dd) 이 패턴을 SimepleDateFormat 의 생성자의 매개값으로 지정하새 객체를 생성하면 된다.

 

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy년 MM월 dd일”);

String strDate = sdf.format(new Date());

System.out.println(strDate);

 

 


3. 문자열 형식 클래스 MessageFormat

 

데이터를 파일에 저장, 네트워크로 전송 시, 데이터베이스 SQL 문을 작성 시

일정한 형식의 문자열을 사용한다.

 

MessageFormat 클래스를 사용하면 문자열에 데이터가 들어갈 자리를 표시해 두고,

프로그램이 실행하면서 동적으로 데이터를 삽입하여 문자열을 완성 시킬 수 있다.

 

예) 회원 정보 출력

 

회원 ID : kephi

회원 이름 : 케피

회원 전화 : 010-1234-5678

 

만약 각각 정보가 id, name, tel 변수에 저장되어 있다면 아래와 같이 출력할 수 있다.

 

String result = “회원 ID : ”+ id + “\n회원 이름 : ” + name + “ \n회원 전화 : ” + tel;

 

 

MessageFormat 클래스 사용

 

String message = “회원 ID : {0} \n회원 이름 : {1} \n회원 전화 : {2}”;

String result = MessageFormat.format(message, id, name, tel);

 

MessageFormat은 정적 메소드 format() 을 호출해서 완성된 문자열을 리턴한다.

 

format의 첫 번째 매개 값은 매개 변수화된 문자열을 지정하고,

두 번째 이후의 매개 값은 인덱스 순서에 맞게 값을 나열한다. (배열을 대신 대입할 수도 있다.)

 

String text = “회원 ID : {0} \n회원 이름 : {1} \n회원 전화 : {2}”;

Object[] arguments = { id, name, tel };

String result = MessageFormat.format(text, arguments);      // 배열로 전달!

System.out.println(result);