JAVA를 처음 배우면 System.out.println("Hello World!"); 부터 배운다.
그리고 얼마 안있어서 System.out.printf("%d",3); 와 같은 포맷을 지정할 수 있는 printf도 배운다.
format() 메서드는 printf와 비슷하게 포맷을 지정하여 String에 저장할 수 있는 메서드이다.
1. String.format() 메서드
format(String format, Object... args)
format(Locale locale, String format, Object... args)
- format : 문자열 포맷 지정
- locale : 선택, 로케일 지정
- args : 선택, format에저 지정된 포맷에 넣어줄 데이터 입력
(ex)
int age = 23
String str = String.format("나이 : %d",age);
2. format() 예제 - String, double, int
String name = "KIM";
int age = 23;
double height = 174.56;
int money = 1234500;
String info1 = String.format("이름 : %s\n",name);
String info2 = String.format("나이 : %d\n", age);
String info3 = String.format("키 : %7.3f\n", height);
String info4 = String.format("money : %d", money);
System.out.println("===USER INFO===\n"+info1+info2+info3+info4);
(출력)
===USER INFO===
이름 : KIM
나이 : 23
키 : 174.560
money : 1234500
3. format 지정자
%d
대상 : Integer (byte, short, int, long, bigint)
반환 : 10진수 정수
%f
대상 : 부동소수 (float, double)
반환 : 십진수
%c
대상 : character 자료형
반환 : 유니코드 단일 문자 반환
%s
대상 : 문자열
반환 : 문자열
%x
대상 : Integer (byte, short, int, long, bigint)
반환 : 16진수 문자열
%o
대상 : Integer (byte, short, int, long, bigint)
반환 : 8진수 문자열
%a
대상 : 부동소수점 자료형
반환 : 부동소수점 숫자의 16진수
String s1 = String.format("data : %a",123.12);
//data : 0x1.ec7ae147ae148p6
%b
대상 : 모든 타입의 자료형
반환 : null 또는 false 인 경우 false 반환 / 이외의 경우 true 반환
String s1 = String.format("data1 : %b",true); //data1 : true
String s2 = String.format("data2 : %b",false); //data2 :false
String s3 = String.format("data3 : %b",null); //data3 :false
String s4 = String.format("data4 : %b",123); //data4 :true
String s5 = String.format("data5 : %b","hello"); //data5 :true
%e
대상 : 공학적 표기법의 부동소수 ( 54e2 = 5400 )
반환 : 과학적(공학적) 표기법의 십진수
String s1 = String.format("data1 : %e",5432e6); //data1 : 5.432000e+09
String s2 = String.format("data2 : %.2e",1235e12); //data2 : 1.24e+15
String s3 = String.format("data3 : %.2e", 1234e12); //data3 : 1.23e+15
String s4 = String.format("data4 : %e",314.1592e-2); //data4 : 3.141592e+00
%g
대상 : 부동소수
반환 : 값의 크기와 정밀도에 따라 과학적 표기법으로 십진수 표시 (%e는 입력도 과학적 표기법으로 해야 함)
String s = String.format("data : %g",3141231231.1592); //data :3.14123e+09
4. 자릿수 포맷
정수 예제
String s1 = String.format("s1 : |%d|",12345);
String s2 = String.format("s2 : |%10d|",12345);//10자리 차지 , 우측 정렬
String s3 = String.format("s3 : |%-10d|",12345);//10자리 차지 , 좌측 정렬
String s9 = String.format("s3 : |%07d|",12345);//빈칸은 0으로 채움
s1 : |12345|
s2 : | 12345|
s3 : |12345 |
s9 : |0012345|
부동소숫점 예제
String s4 = String.format("s4 : |%f|",123.4567);
String s5 = String.format("s5 : |%.1f|",123.4567); //소숫점 아래 몇째자리까지 나타낼 것인지 설정
String s6 = String.format("s6 : |%.2f|",123.4567);
String s7 = String.format("s7 : |%9.3f|",123.45); //전체 길이 : 9 / 소숫점 아래 셋째자리 / 우측 정렬
String s8 = String.format("s8 : |%09.3f|",123.45); //빈칸은 0으로 채우기
s4 : |123.456700|
s5 : |123.5|
s6 : |123.46|
s7 : | 123.450|
s8 : |00123.450|
System.out.printf() 도 위와 완전히 동일하다.
반응형
'JAVA & Spring' 카테고리의 다른 글
[JAVA] 배열의 길이 length에는 괄호()가 붙지 않고, 문자열의 길이 length()에는 괄호()가 붙는 이유 (0) | 2023.06.03 |
---|---|
[JAVA] Math 클래스 (0) | 2023.06.02 |
[JAVA] 람다식과 스트림 Stream() (0) | 2023.05.25 |
[JAVA] 파일 입출력 (2) | 2023.05.19 |
[Java] StringTokenizer (0) | 2023.05.04 |