자바

JAVA 자바 Format 클래스 / 숫자 형식 클래스 DecimalFormat , 날짜 형식 클래스 SimpleDateFormat , 문자열 형식 클래스 MessageFormat

알통몬_ 2017. 3. 15. 10:57
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


Format 클래스

 어떤 상품의 가격을 표시할 때 정수 세자리마다 쉼표(,)를 넣고 싶다면? 정수를 문자열로 변환한 다음 세자리씩 끊어서 쉼표를 넣을 수 있을 것입니다. 또 다른 예로 학생들의 점수를 리스트화하고 소수점 한자리로 일정하게 맞추어 출력하고 싶다면? 각 점수에 10을 곱해서 정수화하고, 다시 10.0으로 나누어 소수점 한자리로 만들어야 합니다. 날짜도 역시 원하는 문자열로 출력하기 위해서는 Calendar로부터 년, 월, 일, 시, 분, 초를 얻어 원하는 문자열로 조합하는 과정을 거쳐야 합니다. 

귀찮은 작업을 쉽게 해결할 수 있습니다. 바로 형식 클래스입니다. 

형식 클래스는 java.text 패키지에 포함되어 있고, 

숫자 형식을 위해 DecimalFormat를 , 날짜 형식을 위해SimpleDateFormat , 

매개 변수화된 문자열 형식을 위해 MessageFormat 등을 제공합니다.


숫자 형식 클래스 DecimalFormat


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

ex)

DecimalFormat df = new DecimalFormat("#,###.0");

String result = df.format(1234567.89);



날짜 형식 클래스 SimpleDateFormat

특정 문자열 포맷으로 얻고 싶다면 java.text.SimpleDateFormat 클래스를 이용하면 됩니다. 

SimpleDateFormat 클래스도 날짜를 원하는 형식으로 표현하기 위해 패턴을 사용합니다.



 패턴에는 자릿수에 맞게 기호를 반복해서 작성할 수 있습니다. 

예를 들어 yyyy는 년도를 4자리로 표시하라는 뜻이고, 

MM,dd는 각각 달과 일을 2자리로 표시하라는 뜻입니다. 

적용할 패턴을 정한 후 이 패턴을 SimpleDateFormat의 생성자 매개값으로 지정해서 

객체를 생성하면 됩니다. 

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

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

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




문자열 형식 클래스 MessageFormat

 데이터를 파일에 저장하거나, 네터워크로 전송할 때, 또는 데이터베이스 SQL 문을 작성할 때

등 많은 부분에서 일정한 형식의 문자열을 사용합니다. MessageFormat 클래스를 사용하면 문자열에 데이터가 들어갈 자리를 표시해 두고, 프로그램이 실행하면서 동적으로 데이터를 삽입해 문자열을 완성시킬 수 있습니다.예를 들어서 아래와 같은 회원 정보를 출력한다고 하면,

userId : rain483

userName : 알통몬

userTel : 010-1234-1234


userId, userName, userTel 이라는 변수에 회원 정보가 저장되어 있다면, 아래와 같은 + 연산자로 출력할  문자열을 생성할 수 있을 것입니다. 

String inf = "회원 Id" +userId+ "회원 이름" +userName + "회원 전화번호" + userTel; 

나쁜 방법은 아니지만 + 연산자 때문에 복잡해 보이고 전체 문자열을 파악하기 쉽지 않습니다.

아래와 같이 MessageFormat 클래스를 사용하면 좀 더 깔끔하게 데이터를 삽입시켜주고 전체 문자열을 쉽게 예측할 수 있습니다.

String message = "회원 Id :{0} \n회원 이름 : {1} \n회원 전화번호 : {2}";

String result = MessageFormat.format(message, userId, userName, userTel);


MessageFormat 은 static format() 메서드를 호출하여 완성된 문자열을 리턴합니다. 

format() 메서드의 첫 번째 매개값은 매개 변수화된 문자열을 지정하고, 두 번째 이후의 매개값들은 인덱스의 순서에 맞게 값을 나열하면 됩니다. 값 대신 아래 처럼 배열을 대입해도 됩니다.

String message = "회원 Id :{0} \n회원 이름 : {1} \n회원 전화번호 : {2}";

Object[] arguments = {userId, userName, userTel};

String result = MessageFormat.format(message, arguments);



반응형