Java
Java String format 사용법
RyanGomdoriPooh
2019. 8. 27. 21:24
String format 문법 형식
%[argument_index$][flags][width]conversion
문법 설명
1) 필수값: %와 conversion 으로 무조건 있어야합니다.
"conversion": 표현 할 데이터의 타입으로, s(문자열), d(정수), x(16진수), o(8진수), f(실수) ex) %s, %d, %x, %o, %f
ex) System.out.println(String.format("%s, %s", "KOREA", "JAPAN"));
2) 옵션값: [argument_index$][flags][width] 는 생략 가능합니다.
생략 가능한 옵션
- [argument_index] 옵션
- [flags] 옵션
- [width] 옵션
[argument_index] 옵션
들어갈 파라미터의 인덱스이다. 1부터 시작한다.
아래를 보면 2$와 1$를 각 각 추가했는데 2$는 두번 째 문자열인 "JAPAN"을 의미하고,
1$는 첫 번째 "KOREA"를 의미하기 때문에 출력 순서가 바뀐 것입니다.
// 길이를 10으로 지정 (width + argument_index 옵션)
System.out.println(String.format("%2$10s%1$10s", "KOREA", "JAPAN"));
JAPAN KOREA
[flags] 옵션
[flags]는 [argument_index]와 [width]사이에 위치합니다.
'-' flag를 사용하면 출력되는 문자열이 왼쪽으로 정렬 됩니다.
'-' flag를 빼면 이전 예제와 같이 오른쪽으로 정렬됩니다.
System.out.println(String.format("%-10s%-10s", "KOREA", "JAPAN"));
KOREA JAPAN
System.out.println(String.format("%10s%10s", "KOREA", "JAPAN"));
KOREA JAPAN
[width] 옵션
conversion앞에 위치하는 [width]를 사용한 샘플입니다.
// 길이를 10으로 지정 (width 옵션)
System.out.println(String.format("%10s%10s", "KOREA", "JAPAN"));
KOREA JAPAN
필수 값 : conversion
- %d : 10진수(정수)
- %x : 16진수
- %o : 8진수
- %f : 실수
1. %d : 10진수(정수)
// 정수는 %뒤에 d를 붙여서 사용합니다.
System.out.println(String.format("%d, %d", 12345, 67890));
12345, 67890
System.out.println(String.format("%10d%10d", 12345, 67890));
12345 67890
System.out.println(String.format("%2$10d%1$10d", 12345, 67890));
67890 12345
System.out.println(String.format("%-10d%-10d", 12345, 67890));
12345 67890
// 이번엔 0 flag를 사용해서 공백 부분은 0으로 채우겠습니다.
// 0 flag는 정수나 실수를 대입할때만 사용가능하며 문자열 등에는 사용할 수 없습니다.
System.out.println(String.format("%010d%010d", 12345, 67890));
00000123450000067890
//정수, 실수에 사용 가능한 몇가지 flag를 더 사용해 보겠습니다. + flag를 사용한 샘플입니다.
//부호를 표시하면서 남는 자리수는 0으로 채우는 샘플입니다.
System.out.println(String.format("%+10d%+10d", 100, -200));
+100 -200
// '(' 를 사용하면 음수인 경우만 괄호가 사용됩니다.
System.out.println(String.format("%(10d%(10d", 100, -200));
100 (200)
// ',' flag를 사용한 샘플입니다.
// ','를 사용하면 해당 국가에서 사용되는 기호로 숫자를 그룹지어 줍니다. 대부분 콤마가 사용될 것 같네요.
System.out.println(String.format("%,10d%,10d", 10000, -20000));
10,000 -20,000
2. %x : 16진수
// x를 사용하면 16진수를 출력합니다.
// 아래 샘플에서는 10진수 2047이 16진수로 변환되서 출력 됩니다.
System.out.println(String.format("%10x%10x", 2047, 2047));
7ff 7ff
// X를 대문자로 사용하면 16진수도 대문자로 출력됩니다.
System.out.println(String.format("%10X%10X", 2047, 2047));
7FF 7FF
3. %o : 8진수
// o를 사용하면 8진수를 출력합니다. 아래 샘플에서는 10진수 2047이 8진수로 변환되서 출력 됩니다.
System.out.println(String.format("%10o%10o", 2047, 2047));
3777 3777
4. %f : 실수
// 실수는 f를 사용합니다.
// 사용법은 정수와 거의 같고 .을 사용하면 정밀도를 지정 할 수 있습니다.
// 아래 샘플에서는 정밀도를 소숫점 두 자리까지 지정 했는데 .99가 아니라 .00으로 출력되는 이유는 반올림 되었기 때문입니다.
System.out.println(String.format("%10.2f%10.2f", 100000.999f, 200000.999f));
100001.00 200001.00