Back-End/Java

[ JAVA ] 형식 지정자

oahee 2023. 7. 20. 16:01

기본형식

%[argument_index$] [flags] [width] [.precision] conversion

 

 

- argument_index: (선택 사항) 출력 서식 문자열 내에서 대응할 인수의 인덱스를 지정

                              인덱스는 1부터 시작하며, 이를 사용하여 인수의 순서를 변경하거나 여러 번 사용 가능

int age = 30;
double weight = 68.5;
String name = "John";

// 숫자를 사용한 인덱스 지정
System.out.printf("%2$d세의 %3$s님의 몸무게는 %.1fkg입니다.%n", age, name, weight);
// 출력: 30세의 John님의 몸무게는 68.5kg입니다.

// 인덱스 생략
System.out.printf("%s은(는) %d세이고, %d세입니다.%n", name, age, age);
// 출력: John은(는) 30세이고, 30세입니다.

 

- flags: (선택 사항) 출력에 영향을 미치는 플래그를 설정

표기 설명
- - 왼쪽 정렬
- 기본적으로 오른쪽 정렬 되어있음
+ - 부호 표시
- 양수인 경우에도 부호를 표시하려할 때 사용
- 음수는 기본적으로 표시됨
0 - 0 채우기
- 오른쪽 정렬로 숫자를 출력하면서, 빈 공간에는 0을 출력
, - 그룹 구분 기호
- 큰 숫자를 읽기 쉽게 천단위로 구분
- 예) 1,000,000
( - 음수 부호 괄호
- 숫자가 음수인 경우 괄호로 묶어서 표시
- 예) -10  ->  (10)
<sp> - 양수의 경우 공백으로 표시
- 숫자가 양수인 경우 부호 대신 공백으로 표시
< - 작은 부등호
- 왼쪽 정렬, 너비 기준으로 자름
> - 큰 부등호
- 오른쪽 정렬, 너비 기준으로 자름
# - 대체 형식
- %#f : 부동 소수점 숫자의 경우 소수점을 항상 표시
- %#x : 16진수의 경우 앞에 "0x" 접두사를 붙여서 출력
- %#o : 8진수의 경우 앞에 "0" 접두사를 붙여서 출력
int positiveNumber = 100;
int negativeNumber = -50;

System.out.printf("양수: %+d%n", positiveNumber);   // 출력: 양수: +100
System.out.printf("음수: %+d%n", negativeNumber);   // 출력: 음수: -50

// <sp> 플래그 사용 예시
System.out.printf("양수(공백): % d%n", positiveNumber);   // 출력: 양수(공백):  100
System.out.printf("음수(공백): % d%n", negativeNumber);   // 출력: 음수(공백):  -50
double value = 123.456;
int octalValue = 64;
int hexValue = 255;

System.out.printf("10진수: %f%n", value);       // 출력: 10진수: 123.456000
System.out.printf("16진수: %x%n", hexValue);    // 출력: 16진수: ff
System.out.printf("8진수: %o%n", octalValue);   // 출력: 8진수: 100

// # 플래그 사용 예시
System.out.printf("10진수 (대체 형식): %#f%n", value);      // 출력: 10진수 (대체 형식): 123.456
System.out.printf("16진수 (대체 형식): %#x%n", hexValue);    // 출력: 16진수 (대체 형식): 0xff
System.out.printf("8진수 (대체 형식): %#o%n", octalValue);   // 출력: 8진수 (대체 형식): 0100

 

- width: (선택 사항) 출력 필드의 최소 너비를 지정

              출력되는 값이 지정된 너비보다 짧은 경우 남는 공간을 공백이나 0으로 채울 수 있음

int number = 123;
double value = 123.456;

// [width]를 사용하지 않은 경우
System.out.printf("숫자: %d%n", number);         // 출력: 숫자: 123
System.out.printf("값: %.2f%n", value);         // 출력: 값: 123.46

// [width]를 사용하여 최소 너비를 지정한 경우
System.out.printf("숫자: %5d%n", number);       // 출력: 숫자:   123 (공백으로 채움)
System.out.printf("값: %10.2f%n", value);      // 출력: 값:     123.46 (공백으로 채움)

// [width]와 0 플래그를 함께 사용하여 0으로 채우기
System.out.printf("숫자: %06d%n", number);     // 출력: 숫자: 000123 (0으로 채움)
System.out.printf("값: %010.2f%n", value);    // 출력: 값: 0000123.46 (0으로 채움)


- .precision: (선택 사항) 부동 소수점 숫자의 소수 자릿수를 지정하거나, 문자열의 최대 길이를 제한

double value = 123.456789;

// [.precision]를 사용하지 않은 경우
System.out.printf("값: %f%n", value);        // 출력: 값: 123.456789

// [.precision]를 사용하여 소수 자릿수를 제한한 경우
System.out.printf("값: %.2f%n", value);      // 출력: 값: 123.46 (반올림)

// [.precision]와 [width]를 함께 사용하는 경우
System.out.printf("값: %10.3f%n", value);    // 출력: 값:    123.457

// [.precision]을 0으로 설정하여 소수점 이하를 모두 버리는 경우
System.out.printf("값: %.0f%n", value);      // 출력: 값: 123

 

- conversion: 필수 항목으로, 출력 서식의 종류를 나타냄

종류 설명
%d 10 진수 정수 출력
%f 부동 소수점 숫자 출력
%s 문자열 출력
%c 단일 문자 출력
%b 논리값(boolean) 출력
%x 16 진수 출력
%o 8 진수 출력
%e 지수 형태로 부동 소수점 숫자 출력
%% 퍼센트 기호(%) 자체 출력
int number = 42;
double value = 3.14159;
String name = "Alice";
char initial = 'A';
boolean isJavaFun = true;

System.out.printf("정수: %d%n", number);            // 출력: 정수: 42
System.out.printf("실수: %.2f%n", value);           // 출력: 실수: 3.14
System.out.printf("문자열: %s%n", name);            // 출력: 문자열: Alice
System.out.printf("문자: %c%n", initial);           // 출력: 문자: A
System.out.printf("논리값: %b%n", isJavaFun);       // 출력: 논리값: true
System.out.printf("16진수: %x%n", number);         // 출력: 16진수: 2a
System.out.printf("8진수: %o%n", number);          // 출력: 8진수: 52
System.out.printf("지수 표기: %e%n", value);       // 출력: 지수 표기: 3.141590e+00
System.out.printf("퍼센트 기호: %% %n");             // 출력: 퍼센트 기호: %
 

'Back-End > Java' 카테고리의 다른 글

[ JAVA ] 구구단 출력하기  (0) 2023.07.23
[ JAVA ] 정규표현식  (0) 2023.07.21
[ JAVA ] char to String / String to char / String to char[]  (0) 2023.07.19
[ JAVA ] day05 Quiz  (0) 2023.07.19
[ JAVA ] Day04 Quiz  (0) 2023.07.19