두 클래스 모두 java.text 패키지에 속하여 숫자를 문자열로 또는 문자열을 숫자로 변환한다. 두 클래스 모두 패턴을 이용하여 특정 패턴 때문에 형 변환이 쉽지 않을 때 사용할 수 있다. 예를 들어 Double.parseDouble("123,456.78"); 구문은 에러가 발생한다. 그래서 이러한 경우들에 사용하면 된다. 먼저 숫자를 특정한 패턴에 맞는 문자열로 바꾸고 싶다면 format() 메서드를 사용하면 된다. 반대로 특정 패턴에 있는 문자열을 숫자로 변환하고 싶을 때는 parse() 메서드를 사용하면 된다.
1. DecimalFormat 클래스
DecimalFormat 클래스는 NumberFormat 클래스를 상속한 구체 클래스다. 그렇기 때문에 NumberFormat의 방법과 다를 게 없다. format() 메서드를 통해 매개변수로 숫자를 받고 패턴에 맞는 문자열로 반환한다.
int price = 10_0000;
DecimalFormat df = new DecimalFormat("###,###");
String format1 = df.format(price);
System.out.println(format1); // 1E5
2. NumberFormat 클래스
NumberFormat 클래스는 추상 클래스이기 때문에 인스턴스를 생성할 수 없고 대신 getInstance()를 통해 NumberFormat 객체를 가진다. 위의 선언부를 보면 NumberFormat 또한 Format 클래스를 상속한 것을 알 수 있는데 format() 메서드는 사실 Format 클래스로부터 온 것이다.
long amount = 200000000000L;
NumberFormat nf = NumberFormat.getInstance();
String format2 = nf.format(amount);
System.out.println(format2); // 200,000,000,000
+ DateFormat 클래스 (SimpleDateFormat 클래스)
마찬가지로 DateFormat 클래스 위에도 Format 클래스가 있다. 즉 DateFormat, SimpleFormat 모두 Format 클래스를 상속했다는 것이다. 그렇기 때문에 format() 메서드를 가지고 있어 비슷한 기능을 할 수 있다. 이 클래스는 주로 날짜와 시간을 다양한 형식으로 바꾸는 역할을 한다. 패턴은 공식 문서에 보기 쉽게 정리되어 있다.
SimpleDateFormat is a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting (date → text), parsing (text → date), and normalization.
[출처: https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html ]
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
try {
Date d = df.parse("2025년 5월 5일"); // 문자열을 Date 객체로
System.out.println(df2.format(d)); // Date 객체를 문자열로, 2025/05/05
} catch(Exception e) {
System.out.println("error occured!!!");
}
}
}
https://hobbytogether.tistory.com/68
[JAVA] 자바 천 단위(1,000) 숫자 3자리마다 콤마(,) 표시하기
자바에 천 단위(1,000)마다 콤마(,) 표시되도록 하기 오늘은 금액 데이터를 표시할때 천 단위마다 콤마가 표시되도록 해서 가독성을 향상시키는 방법에 대해 알아보도록 하겠습니다. 3자리마다 콤
hobbytogether.tistory.com
https://youngssse.tistory.com/entry/Java-%ED%98%95%EC%8B%9D%ED%99%94-Format
[Java] 형식화 (Format)
java.text 패키지에 포함되어 있으며 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다. 예를 들어, 입력된 날짜에 대해서 출력할 때
youngssse.tistory.com
'JAVA' 카테고리의 다른 글
[JAVA] List, Set은 선언된 변수만으로 컬렉션의 내용이 찍힌다 (0) | 2025.01.11 |
---|---|
[JAVA] 소수점 특정 자릿수까지 표현하기 (0) | 2025.01.02 |
[JAVA] 열거형 enum (6) | 2024.10.09 |
[JAVA] 직렬화, 역직렬화 개념 (1) | 2024.10.02 |
[JAVA] 큐(Queue), 덱(Deque) 구현체, 메서드 정리 (0) | 2024.09.30 |