int A = 100; // 기본 자료형 변수 A 선언과 동시에 초기화
System.out.println("A 의 값 : " + A); // 출력 결과 : A의 값 : 100
➡️변수 A의 출력형태는 바뀌지 않음. A는 오로지 100으로만 출력됨
==============================================================
int B = 100; // 변수 B 선언과 동시에 초기화. 값 100.
System.out.printf("B는 %d 이다. %n", B); // %d(10진수) : B는 100 이다.
System.out.printf("B는 %x 이다. %n", B); // %x(16진수) : B는 64 이다.
System.out.printf("B는 %c 이다. %n", B); // %c(문자) : B는 d이다.
System.out.printf("B는 %s 이다. %n", B); // %s(문자열) : B는 100이다.
System.out.printf("B는 %f 이다. %n", B); // %f(부동소수점) : B의 리터럴값은 10이므로 에러출력
➡️변수 B의 출력형태는 바꿀 수 있음.
➡️printf()메소드를 이용했기 때문에 다양한 지시자(%d, %x, %c 등)를 사용하여 바꿀 수 있다.
➡️※ %n은 개행(줄바꿈)을 위한 도구로, 지시자의 개수에 포함하지 않는다.
System.out.printf("지시자", 변수)
System.out.printf("B는 %d 이다.", B);
%d
는 십진수를 출력하도록 하는 지시자B
는 출력하고자 하는 변수""
(따옴표) 안에 지시자를 포함하여 입력하고 ,
(콤마) 뒤에 지시자의 개수만큼 출력하고자 하는 변수를 입력한다.지시자 | 설명 |
---|---|
%b | 불리언(boolean) 형식으로 출력 (true or false) |
%d | 10진수(decimal) 정수의 형식으로 출력 |
%o | 8진수(octal) 형식으로 출력 |
%x, %X | 16진수(hexa-decimal) 형식으로 출력 (%x는 소문자, %X는 대문자 출력) |
%f | 부동 소수점(floating point) 형식으로 출력 |
%e, %E | 지수(exponent) 형식으로 출력 |
%c | 문자(character) 형식으로 출력 (Unicode) |
%s | 문자열(string) 형식으로 출력 |
플래그 | 설명 |
---|---|
"-" | 왼쪽으로 정렬 |
"+" | 부호 출력 |
"0" | 남는 자리를 0으로 채움 |
"," | 일정 자리수마다 구분문자 표시 |
"#" | 8진수, 16진수 표시시 접두사 포함 등 출력형태 보완 |
<예시>
int age = 14;
int year = 2019;
// age:14 출력
System.out.printf("age:%d", age);
// age:14 출력 (변수 대신 십진수 리터럴을 직접 넣은 경우)
System.out.printf("age:%d", 14);
// age:14 출력 (지시자와 변수 모두 넣지 않은 경우)
System.out.printf("age:14");
// age: 14 year:2019 (지시자의 개수와 순서가 콤마 뒤의 변수 개수 및 순서와 맞아야함)
System.out.printf("age:%d year:%d", age, year);
// printf에서 줄바꿈을 하려면 지시자 ‘%n’을 따로 넣어주어야 한다. (/n 보다 %n이 OS측면에서 안정적)
System.out.printf("%n"+"age:%d%nyear:%d"+"%n", age, year);
<예제>
String url = "www.codechobo.com";
float fl = .10f; // 0.10, 1.0e-l
float f2 = 1e1f; // 10.0, 1.0el, 1.0e+l
float f3 = 3.14e3f;
double d = 1.23456789;
//각각의 변수를 각기 다른형태로 출력 %f(부동소수점), %e(10의제곱), $g(간략히)
System.out.printf("fl=%f, %e, %g%n", f1, f1, f1);
System.out.printf("f2=%f, %e, %g%n", f2, f2, f2);
System.out.printf("f3=%f, %e, %g%n", f3, f3, f3);
System.out.printf("d=%f%n", d);
System.out.printf("d=%14.10f%n", d); // 전체 14자리 중 소수점 10자리
System.out.printf("[12345678901234567890]%n");
System.out.printf("[%s]%n", url); // 문자열 형태로 출력 후 개행
System.out.printf("[%20s]%n", url); // 총 20자리 중 문자열 형태로 변수 url 출력
System.out.printf("[%-20s]%n", url); // 왼쪽 정렬 플래그(%-)
System.out.printf("[%.8s]%n", url); // 왼쪽에서 8글자만 출력(%.8s)
<예제 출력결과>
fl=0.100000, 1.000000e-01, 0.100000
f2=10.000000, 1.000000e+01, 10.0000
f3=3140.000000, 3.140000e+03, 3140.00
d=1.234568 // 마지막 자리가 반올림 되었는데, f는 소수점 아래 6자리까지만 출력됨
d= 1.2345678900
[12345678901234567890]
[www.codechobo.com]
[ www.codechobo.com]
[www.codechobo.com ]
[www.code]
<⬇️문자열 중 일부 출력 : %.출력할 글자수s>
String url = "www.codechobo.com";
//왼쪽에서 8글자만 출력
System.out.printf("[%.8s]%n", url); // [www.code]
//왼쪽에서 10글자를 출력
System.out.printf("[%.10s]%n", url); // [www.codech]
System.out.printf("%5d", 1234567) // 1234567
*=> 리터럴이 지정된 자리수보다 더 많을 경우 짤리지 않고 온전히 출력
<⬇️자리수를 나타내기 : %전체자리.소수점아래자리f>
//소수점 포함한 10자리 실수 리터럴을 담고 있는 변수 d (전체10자리, 그 중 소수점 8자리)
double d = 1.23456789;
// %14.10f => 전체자리수 14자리 중 소수점이 10자리를 차지. 이를 부동소수점(f)형태로 출력
//소수점 두 자리 채우기 위해 우측에 0, 전체자리 두 자리 더 채워야하므로 좌측 공백
System.out.printf("%14.10f",d); // __1.2345678900
// %-14.10f => (-)왼쪽 정렬, (14.10)전체자리수 14 중 소수점10자리, (f)부동소수점 형태로 출력
System.out.printf("%-14.10f",d); // 1.2345678900__
1. 플래그를 포함하는 지시자 : %(플래그)(지시자)
<예시>
System.out.printf("%,d" ,10000000); // 출력 결과: 10,000,000
2. 플래그와 자리수형식을 포함하는 지시자 : %(플래그)(자리수)(지시자)
<예시>
//%다음 플래그-전체 자리수-지시자 순으로 작성
System.out.printf("%,20d" ,10000000);
☑️ 정리: %로 열고, 플래그 넣고, 자리수 넣고, 지시자(d 등)로 닫기