반응형
- java.text패키지에 포함
- 형식화 클래스 → 형식화에 사용될 패턴을 정의
- 데이터를 정의된 패턴에 맞춰 형식화할 수 있음
- 역으로 형식화된 데이터에서 원래의 데이터를 얻어낼 수도 있음
1. DecimalFormat
- 숫자를 형식화 하는데 사용
- 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식 표현 가능
- 반대로 그러한 형식의 텍스트를 숫자로 쉽게 변환도 가능
- 기본문법
- 패턴을 이용해서 숫자를 다르게 변환하는 예제 parse메서드를 이용하면 기호와 문자가 포함된 문자열을 숫 자로 쉽게 변환가능
- Number 클래스는 Integer, Double 과 같은 숫자를 저장하는 래퍼 클래스의 조상이며, doubleValue()는 Number에 저장된 값을 double형의 값으로 변환하여 반환함.
2. SimpleDateFormat
- SimpleDateFormat의 조상 → DateFormat은 추상클래스
- 날짜 데이터를 원하는 형태로 다양하게 출력할 수 있음
- 기본문법
Date today = new Date();
SimpleDateFormat df = new simpleDateFormat("yyyy-MM-dd");
// 오늘 날짜를 yyyy-MM-dd 형태로 변환하여 반환한다.
String result = df.format(today);
- Date 인스턴스만 format 메서드에 사용될 수 있기 때문에 Calendar인스턴스를 Date인스턴스로 변환해 사용해야한다.
Calendar cal = Calendar.getInstance();
cal.set(2022, 9, 3);
// 2022년 10월 3일 - Month는 0 ~ 11의 범위를 갖는다.
Date day = cal.getTime();
SimpleDateFormat sdf1;
sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf1.format(day)); // 2022-10-03
- Date인스턴스를 Calendar인스턴스로 변환할 때는 Calendar클래스의 setTime() 을 사용하면된다.
- 화면으로부터 날짜를 입력받아 계산결과를 출력하는 예제
- 지정된 패턴으로 입력하지 않은 경우, parse 메서드를 호출하는 부분에서 예외가 발생하기 때문에 while문을 벗어나지 못함
3. ChoiceFormat
- 특정 범위에 속하는 값을 문자열로 변환해준다.
- 연속적 또는 불연속적인 범위의 값들을 처리하는데 있어서 코드를 간단하고 직관적으로 만들 수 있다.
- 기본 문법
- 경계값은 double형으로 반드시 모두 오름차순으로 정렬되어 있어야 하며, 치환 될 문자열의 개수는 경계값에 의해 정의된 범위의 개수와 일치해야함
- 예제의 경계값 ⇒ 60~69, 70~79, 80~89, 90~의 범위
- 패턴을 사용하도록 변경
- 패턴은 구분자로 # 와 < 두 가지를 제공하는데 limit#value의 형태로 사용함
- #은 경계값을 범위에 포함시키지만 , <은 포함시키지않음!!
4. MessageFormat
- 데이터를 정해진 양식에 맞게 출력할 수 있도록 도와줌
- 양식을 미리 작성하고 프로그램을 이용해 다수의 데이터를 같은 양식으로 출력할때 사용하면 좋음 ex) 고객들에게 보낼 안내문을 이름만 달라지도록 출력할때 또는 하나의 데이터를 다양한 양식으로 출력할때 사용됨
- MessageFormat에 사용할 양식인 문자열 msg 를 작성할 때 {숫자} 로 표시된 부분이 데이터가 출력될 자리다.
- 이 자리는 순차적일 필요가 없고 여러번 반복해 사용할 수 있음!
- 위 예제에 사용되는 숫자는 배열처럼 인덱스가 0부터 시작하며 양식에 들어갈 데이터는 객체배열인 arguments에 지정되어 있음!
- 객체 배열이기 때문에 String이외에도 다른 객체들이 지정될 수 있으며, 이 경우 보다 세부적인 옵션들이 사용될 수 있음.
- 반복문으로 하나 이상의 데이터 집합을 출력하는 예제
- 다수의 데이터를 Database 에 저장하기 위한 Insert문으로 변환하는 경우 등에 사용하면 좋음
- 홑따옴표(’)는 MessageFormat의 양식에 escape문자로 사용되기 때문에 문자열 내에서 홑따옴표를 사용하려면 연속 두번 사용해야함.
- parse(String source)를 이용해서 출력된 데이터로부터 필요한 데이터만을 뽑아내는 방법을 보여주는 예제
- Scanner를 통해 파일로부터 데이터를 라인별로 읽어서 처리하도록 변경