1. 형식화 클래스란?
프로그래밍에서 유용한 형식과 화면에서 유용한 데이터 형태는 다르다. 화면에 출력될 때는 문자열만 의미가 있기 때문에 사람이 읽을 수 있도록 가시성이 좋도록 Object의 toString() 메서드를 오버라이딩해서 사용한다.
하지만 오바라이딩해서 사용하기 힘든 두 가지 형태가 있는데, 기본형 숫자와 Date 클래스다.
그래서 숫자 또는 Date를 읽기 쉬운 문자열로 바꾸는데 사용되는 클래스를 형식화 클래스라 한다
형식화 클래스에는 DecimalFormat과 SimpleDateFormat이 있다.
📌출처:https://itellyhood.tistory.com/85
- java.text 패키지의 DecimalFormat, SimpleDateFormat
- DecimalFormat 숫자를 형식화
- SimpleDateFormat 날짜를 형식화
- 숫자와 날짜를 원하는 형식으로 쉽게 출력 가능(숫자, 날짜 -> 형식 문자열로)
package javajungsuk;
import java.text.DecimalFormat;
public class Java10_2_1 {
public static void main(String[] args) {
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number);
System.out.println(result);
}
}
<결과값>
1.2E6
- 형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열 -> 숫자, 날짜)
package javajungsuk;
import java.text.DecimalFormat;
public class Java10_2_2 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###.##");
//Number - 모든 숫자 래퍼클래스의 최고 조상
Number num = df.parse("1,234,567.89");
double d = num.doubleValue();
}
}
2. 숫자의 형식화 (DecimalFormat)
- 숫자를 형식화 할 때 사용한다.(숫자 -> 형식 문자열)
- 즉, 10진수를 문자열로 바꿀때 사용한다.
package javajungsuk;
import java.text.DecimalFormat;
public class Java10_2_1 {
public static void main(String[] args) {
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number);
System.out.println(result);
}
}
우리가 기호에 따라서 패턴을 주면 그에 따른 결과를 나타내준다 또한 조합해서 사용해도 된다.
- 특정 형식의 문자열을 숫자로 변환할 때도 사용한다.(형식 문자열 -> 숫자)
package javajungsuk;
import java.text.DecimalFormat;
public class Java10_2_2 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###.##");
//Number - 모든 숫자 래퍼클래스의 최고 조상
Number num = df.parse("1,234,567.89");
double d = num.doubleValue();
}
}
[참고] Integer.parseInt()는 콤마(,)가 포함된 문자열을 숫자로 변환 못한다.
[실습]
문자열 -> 숫자 -> 문자열
package javajungsuk;
import java.text.DecimalFormat;
public class Java10_2_3 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###.##");
DecimalFormat df2 = new DecimalFormat("#.###E0");
try {
//문자를 숫자로 바꿀 땐 parse 사용
Number num = df.parse("1,234,567.89");
System.out.println("1,234,567.89" + " -> ");
double d = num.doubleValue();
System.out.println(d + " -> ");
//숫자를 형식문자열로 바꿀땐 format을 사용
System.out.println(df2.format(num));
}catch (Exception e) {}
}
}
3. 날짜의 형식화(SimpleDateFormat)
- 날짜의 형식화는 날짜와 시간을 다양한 형식으로 출력할 수 있게 해준다. (숫자 -> 문자)
package javajungsuk;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Java10_2_4 {
public static void main(String[] args) {
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//오늘 날짜를 yyyy-MM-dd형태로 변환하여 반환
String result = df.format(today);
System.out.println(result);
}
}
<결과>
2022-01-24
- 특정 형식으로 되어 있는 문자열에서 날짜와 시간을 뽑아낼 수도 있다.(문자열 -> 숫자)
package javajungsuk;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Java10_2_5 {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
Date d = df.parse("2022년 01년 24일");
String result = df2.format(d);
}
}
실습
package javajungsuk;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Java10_2_6 {
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("2022년 01월 24일");
System.out.println(df2.format(d));
} catch(Exception e) {}
}
}
'Java > 객체지향' 카테고리의 다른 글
[객체지향][자바의 정석] - 13. ArrayList (0) | 2022.01.25 |
---|---|
[객체지향][자바의 정석] - 12.Collection 인터페이스의 메서드 (0) | 2022.01.25 |
[객체지향][자바의 정석] - 10. 1 날짜와 시간 (0) | 2022.01.21 |
[객체지향][자바의 정석] - 9.4 Math & wrapper 클래스 (0) | 2022.01.21 |
[객체지향][자바의 정석] - 9.3 StringBuffer클래스 (0) | 2022.01.17 |