기본형식
%[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 |