NumberFormat 클래스는 추상 클래스로 숫자의 포맷을 지정할 때 사용하는 클래스이다. NumberFormat 클래스는 팩토리 패턴을 사용하여 작성된 클래스이기 때문에 'new' 연산자를 사용하여 객체를 생성할 수 없고 getInstance()메소드를 사용하여 인스턴스를 얻는다.
NumberFormat 클래스로 표현할 수 있는 포맷의 종류는 다음과 같다.
- 정수형
- 통화 수치
- 퍼센트
각 포멧에 해당하는 NumberFormat 클래스를 생성할 때는 각 포멧에 해당하는 인스턴스 반환 메소드를 사용하는데 각 포멧에 따른 인스턴스 생성 메소드는 다음과 같다.
- 정수형: getIntegerInstance()
- 통화 수치: getCurrencyInstance()
- 퍼센트: getPercentInstance()
정수형 객체 생성 방법: NumberFormat nf = NumberFormat.getIntegerInstance();
통화수치 객체 생성 방법: NumberFormat nf = NumberFormat.getCurrencyInstance();
퍼센트 객체 생성 방법: NumberFormat nf = NumberFormat.getPercentInstance();
NumberFormat 클래스는 문자열을 파라미터로 사용하는 parse() 메소드를 사용하면 포맷이 적용되어 있는 문자열을 Number 객체로 반환할 수 있다. java.lang.Number 클래스는 BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short 클래스의 슈퍼 클래스로 데이터를 해당 자료형에 맞게 반환하는 메소드를 가지고 있다. (Number 클래스 API 참조)
NumberFormat 클래스 사용예)
try {
NumberFormat format = NumberFormat.getInstance();
String normalString = "1000";
String decimalString = "1000.12";
String separatorString = "1,000";
// NumberFormat 클래스는 try catch 구문으로 항상 예외를 처리해야 한다.
Number normal = format.parse(normalString);
Number decimal = format.parse(decimalString);
Number separator = format.parse(separatorString);
System.out.println("정수형 : " + normal);
System.out.println("통화 : " + decimal);
System.out.println("퍼센트 : " + separator);
// 정수형 테스트(소숫점을 버림)
System.out.println("정수형 처리의 기본값은 : " + format.isParseIntegerOnly());
format.setParseIntegerOnly(true);
normal = format.parse(decimalString);
System.out.println("정수형 테스트 : " + normal + "(" + format.isParseIntegerOnly() + ")");
System.out.println("일반 숫자 : " + format.format(normal));
format = NumberFormat.getCurrencyInstance();
System.out.println("통화 :" + format.format(normal));
format = NumberFormat.getPercentInstance();
System.out.println("퍼센트 : " + format.format(normal));
} catch(Exception e){
e.printStackTrace();
}
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
Buffered Stream(버퍼 스트림) (0) | 2010.12.02 |
---|---|
수학에 관련된 Math 클래스 (0) | 2010.12.01 |
숫자 출력 포맷 결정하기 (0) | 2010.12.01 |
자바의 숫자 객체인 Number 클래스(기본숫자형의 Wrapper객체) (0) | 2010.12.01 |
반복문 - for 문 (0) | 2010.12.01 |