포메팅(Formatting)구조
포메팅은 문자열의 형식을 지정하기 위한 것이다.
% 2$ + 010.4d
% 포메팅 지정자
2$ 매개변수 인덱스
+ 플래그
010 너비
.4 정밀도
d 컨버전
포매팅 지정자
%는 포매팅을 지정하는 지정자이다. 그래서 포매팅을 원하는 경우 반드시 %를 앞에 붙여야 한다.
예제
System.out.format("%1$d", 10, 20); ////10 출력
System.out.format("%d, %d", 10, 20); //10, 20출력
인자 인덱스
1$에서 1은 사용하는 인자 순서이며 2, 3등의 숫자를 지정할 수 있다.
이러한 숫자를 지정하지 않으면 뒤에서 오는 인자에 따라 순차적으로 숫자가 지정된다.
System.out.format("%1d", 10, 20); //10출력
System.out.format("%2d", 10, 20); //20출력
플래그
플래그는 지정된 매개변수를 어떤 형태로 만들지를 결정하는 항목이다.
+ 숫자에는 항상 부호를 지정한다.
- 왼쪽 정렬
, 숫자에 숫자 그룹핑 문자(,)를 추가한다.
( 음수는 항상 ()로 감싸도록 한다.
0 숫자 왼쪽에 지정된 너비(Width) 내에서 0을 채운다.
포매팅(플래그)
PrintStream print = new PrintStream(System.out);
print.format("%+d %n", 1000); // +1000 출력
print.format("%,d %n", 1000); // 1,000 출력
print.format("%(d %n", 1000); // 1000 출력
print.format("%010d %n", 1000); // 0000001000 출력
print.format("%,010d %n", 1000); // 000001,000 출력
너비
1. 지정된 너비가 지정된 값보다 작더라도 지정된 값이 잘리지는 않는다.
2. 지정된 값이 지정된 너비보다 작다면 왼쪽에 자동적으로 공백이 추가되며 플래그(Flag)항목에 0이 지정되면 왼쪽에 0이 지정된 너비만큼 추가된다.
예제)
PrintStream print = new PrintStream(System.out);
print.format("%d %n", 1000);
정밀도
1. 컨버전Conversion이 실수형을 표현하기 위한 f를 지정할 경우에만 유효하다.
2. 문자열을 표현하기 위한s를 지정할 경우에는 너비 만큼만 문자열 값에 공백을 채운다.
예제)
System.out.format("7.5f %n", 10.12); // 10.12000출력
System.out.format("7.3f %n" 10.1234);//10.123출력
System.out.format("7.5s &n, "10"); // 10출력(왼쪽 공백5개)
컨버전
컨버전은 지정된 값을 어떻게 포메팅 할 것인지를 정하기 위한 항목이다.
b, B 매개변수가 null이라면 null, boolean이나 Boolean이라면 문자열로 반환, 그 외에는 true를 반환한다.
d 10진수로 값을 표현한다.
f 10진수형 숫잘르 표현한다. 매개변수는 Float, Double, BigDecimal이 올 수 잇다.
s, S 문자열을 표현한다. 매개변수에는 객체의 toString() 메소드 호출에 의한 문자열이 올 수 있다.
t, T 날짜나 시간을 표현한다. 매개변수에는 Date, Calendar, Long이 올 수 있다.
예제
System.out.format("%b %n", Math.PI); // true 출력
System.out.format("%d %n", 10);출력
System.out.format("%s in %s %n", "java", "good"); // java is good 출력
System.out.format("%1$tY %1$tm %1te %n", new java.util.Date()); 2013 4 14 출력
'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글
JAVA - 컬렉션 (0) | 2013.10.15 |
---|---|
JAVA - Scanner클래스 (0) | 2013.10.14 |
format(), printf(), split메소드 (0) | 2013.10.14 |
JAVA - 숫자, 통화 클래스 (0) | 2013.10.13 |
JAVA - 날짜 (0) | 2013.10.13 |