반응형

형식화 클래스

 

  • java.text패키지의 DecimalFormat, SimpleDateFormat
  • 숫자와 날짜를 원하는 형식으로 쉽게 출력 가능(숫자, 날짜 → 형식 문자열)

 

형식화 클래스란, java.text패키지안에 DcimalFormat이나 SimpleDateFormat이라는 클래스가 있는데,
Decimal은 10진수를 의미하는데,
숫자에 대한 형식을 처리해주는 것이 DecimalFormat이고,
SimpleDateFormat은 이름에서도 알 수 있듯, 날짜를 형식화 해주는 것이다.

즉, 숫자를 형식화(문자열)할 때는, DecimalFormat을 사용하면 되고,
날짜를 형식화 할 때는, SimpleDateFormat을 사용하면 된다.

코드를 보자.
double 1234567.89가 있을 때, 이런 10진수를  "1.2E6"과 같이 지수표현으로 바꾸려면 어떻게 할까?
지수형식 표현인 "#.#E0" 를 사용하면 되는데,
DicimalFrmat df = new DecimalFormat("#.#E0"); 처럼
DecimalFormat객체를 만들면서 형식 문자열을 지정해주면 된다.

그러면 1234567.89가 1.2E6(1.2*(10^6))으로 바뀌게 된다.
같은 숫자라도 표현하는 방식이 많다.
형식화 클래스는 날짜와 숫자를 우리가 원하는 형식으로 쉽게 바꿀 수 있도록 도와주는 역할을 한다.

 

  • 형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열) → 숫자, 날짜)

 

반대로도 가능하다.
형식 문자열에서 숫자로, 또는 형식 문자열에서 날짜로 바꾸는 것이 가능하다.

DecimalFormat df = new DecimalFormat("#,###.##"); 처럼
문자열이 있을 때, 문자열이 어떤 형식인지 알려주면, 문자열을 숫자로 바꿔준다.

 

형식화 클래스는  날짜나 숫자를 원하는 형식(문자열)로 바꿔주고,
반대로 어떤 형식의 문자열에서 숫자와 날짜를 뽑아내는 기능도 가지고 있다.

 


DecimalFormat

 

  • 숫자를 형식화할 때 사용(숫자 → 형식 문자열)

 

DecimalFormat은 숫자(10진수)를 형식화 할 때 사용한다.
즉, 숫자를 문자열로 바꿀 때 사용한다.

숫자를 문자로 변환할 때, 단순히 ""(빈문자열)을 더해줘도 되는데,
DecimalFormat은 훨씬 더 다양한 형식으로 숫자를 변환할 수 있다.

사용법은, 앞서 설명했던 것 처럼,
지수형태의 형식표현인 DicimalFrmat df = new DecimalFormat("#.#E0"); 처럼
DecimalFormat객체를 만들면서 형식 문자열을 지정해주면 된다.
double형 타입의 숫자를 지수형식으로 변환할 수 있게 해주고,

String result = df.format(number); 처럼
format()메서드를 호출하면, 숫자가 문자열로 바뀐다.

형식문자열에는 여러가지 패턴이 있다.
여러가지를 조합해서 용도에 맞게 사용하면 된다.

 

  • 특정 형식의 문자열을 숫자로 변환할 때도 사용 (형식 문자열 → 숫자)

특정 형식의 문자열을 숫자로 바꾸는 것도 가능한데,
parse()라는 메서드를 사용하면, 문자열이 Number타입의 객체로 바뀐다.
Number는 모든 숫자 래퍼클래스의 최고 조상이다.
그리고, doublevalue();라는 메서드를 호출하면, 해당 객체가 가지고 있는 값을 double타입으로 바꿔서 준다.

패턴만 내가 사용할 때, 필요에 맞게 바꾸면 되기 때문에,
굳이 위의 코드를 외울 필요 없다.

※ 참고로, Integer.parseInt()는 콤마(,)가 포함된 문자열을 숫자로 변환하지 못한다.
Float.parseFloat()도 마찬가지이다. 콤마가 포함된 문자열을 숫자로 변환하지 못한다.

 

[Ex10_6]

 

[Ex10_7]

parseInt, parseDouble, parseFloat 같은 것들은, 숫자 자리수마다 찍어주는 콤마를 가지고 있는 문자열은 숫자로 변환을 해주지 못한다.

그런 경우에는, DcimalFormat클래스를 사용하면 된다.

형식 문자열에서 숫자로 바꿀 때는, parse()라는 메서드를 사용하면 되고,
반대로, 숫자를 형식문자열로 바꿀 때는, format()이라는 메서드를 사용하면된다.

그리고, DecimalFomat 객체를 생성할 때, 원하는 패턴을 지정해주면 된다.

반응형

'JAVA' 카테고리의 다른 글

컬렉션 프레임웍과 핵심 인터페이스  (0) 2022.04.27
형식화 클래스 SimpleDateFormat  (0) 2022.04.27
Calendar 예제(2)  (0) 2022.04.26
Calendar 예제(1)  (0) 2022.04.25
날짜와 시간, Calendar 클래스  (0) 2022.04.20