티스토리 뷰

숫자 및 문자 등 기본적인 데이터에 대한 형식화 클래스

 

Formatting Parsing
숫자 데이터를 패턴에 의해 
형식화된 문자열로 표현
문자열을 지정된 패턴에 의해 
숫자 데이터로 변환
format() 메서드 사용

parse() 메서드 사용
리턴 타입이 Number 타입이며, 
기본적인 형식이 long 또는 double 이므로 주의!
int 형으로 변환하거나 float 형으로 변환하면 예외 발생

 

DecimalFormat 클래스

- 숫자 데이터에 대한 형식화 클래스(DB에 있는 걸 엑셀로 받을 때 사용) 

실수 1234.5를 1234.50000 형식으로 표현

정수 1234를 ₩1,234 형식으로 표현

-  기존 패턴에 새로운 패턴으로 교체하여 적용 => applyPattern() 메서드 사용

 

패턴 기호 문자

0 0 ~ 9 한자리 (값이 없으면 0으로 채움)
# 0 ~ 9 한자리 (값이 없으면 자리 제거)
. 소수점 기호
, 1000 단위 자릿수 구분 (콤마 기호 뒤의 # 또는 0의 갯수마다 자동으로 표시)
- 음수 표시
E 지수 표시 (잘 사용 안 함)

 

1. 기본 데이터타입 숫자데이터 => 형식화된 문자열

    double dNum = 1234.5;
    // 형식 지정할 패턴 문자열
    String pattern = "₩#,###.###";		// ₩1,234.5
//	String pattern = "₩0,000.000";		// ₩1,234.500
//	String pattern = "₩#,###.000"; 	// ₩1,234.500

    DecimalFormat df = new DecimalFormat(pattern);
    System.out.println(df.format(dNum));

 

2. 문자열에 대한 형식 지정 -> 기본데이터타입 숫자데이터로 바꾸기

=> DecimalFormat 클래스의 parse() 메서드 사용

 

throws ParseException 처리하고

DecimalFormat df = new DecimalFormat(pattern);
String strNum = df.format(dNum);

// 오토언박싱 활용 가능
double parsedNum = (double)df.parse(strNum);
System.out.println(parsedNum);

 

아래와 같이 사용 시 특수문자 포함으로 사용불가

double parsedNum = Double.parseDouble(strNum);

 

 

MessageFormat 클래스

- 문자열과 다른 기본타입 데이터 또는 객체 데이터를 연결하는 경우,
일반적으로 연결연산자(+)를 사용하지만 문자열 구조가 복잡해지는 문제가 발생한다.


- MessageFormat 클래스로 결합될 데이터를 변수처럼 사용하여
패턴을 적용하고, 문자열 결합을 간편하게 수행할 수 있다(printf()로 문자열 결합으로 출력하는 것과 유사)

 

String msgPattern = "이름 : {0}, 나이 : {1}, 주민번호 : {2}";

String name = "홍길동";
int age = 20;
String jumin = "901010-1234567";

String formatStr = MessageFormat.format(msgPattern, name, age, jumin);
System.out.println(formatStr);

위와 같이 출력된다

 

 

Person 클래스와 생성자, get 메서드를 만들고 객체 생성!

class Person {
	private String name;
	private int age;
	private String jumin;
	
    // 생성자
	public Person(String name, int age, String jumin) {
		this.name = name;
		this.age = age;
		this.jumin = jumin;
	}
	
    // get 메서드
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public String getJumin() {
		return jumin;
	}
	
}
Person[] pArr = {
        new Person("홍길동", 20, "901010-1234567"),
        new Person("이순신", 33, "911111-1231223"),
        new Person("강감찬", 41, "940124-1132447")
};

 

반복문 사용해 Person[] 배열을 반복하고,
각각 Person 객체 데이터를 MessageFormat 클래스의 format() 메서드에 전달해 형식 지정 출력

for(int i = 0; i < pArr.length; i++) {
    Person p = pArr[i];
    String formatStr2 = MessageFormat.format(msgPattern, p.getName(),p.getAge(),p.getJumin());
    System.out.println(formatStr2);
}

// 향상된 for문
for (Person p : pArr) {
    String formatStr2 = MessageFormat.format(msgPattern, p.getName(),p.getAge(),p.getJumin());
    System.out.println(formatStr2);
}

각각 출력하면 위와 같이 출력된다.

'배운 것 기록 > java' 카테고리의 다른 글

Event  (0) 2022.07.20
Swing  (0) 2022.07.18
자바 I/O - Input / Output  (0) 2022.07.13
BigInteger, BigDecimal 클래스  (0) 2022.07.12
Formatting - SimpleDataFormat, DateTimeFormatter  (0) 2022.07.11
댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함