Java

[JAVA] format() 메서드 : 문자열 포맷 지정 / printf()

HSRyuuu 2023. 6. 1. 14:43

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() 도 위와 완전히 동일하다.
반응형