: 출력형식 지정 불가
1) 실수의 자리수 조절불가
2) 10진수로만 출력됨. (8진수, 16진수 안됨)
: 지시자(specifier)를 통해 변수의 값을 여러가지 형식으로 변환하여 출력할 수 있음.
double d = 1.23456789;
System.out.printf("d=%14.10f%n", d); // 전체 14자리 중 소수점 아래 10자리
// 출력값> (공백)vv1.2345678900(빈자리 00으로 채움)
System.out.printf("age:%d year: %d\n", 14, 2017)
// 출력> age:14 year:2017
System.out.printf("[%s]%n", url); //문자열의 길이만큼 출력공간 확보
System.out.printf("[%20s]%n", url); //최소 20글자 출력공간 확보(우측정렬)
System.out.printf("[-20s]%n", url); //최소 20글자 출력공간 확보(좌측정렬)
System.out.printf("[%.8s]%n", url); //왼쪽에서 8글자만 출력
1) 정수를 10진수, 8진수, 16진수로 출력 +2진수
System.out.printf("%d", 15); //10진수--> 15
System.out.printf("%o", 15); //8진수--> 17
System.out.printf("%x", 15); //16진수--> f
System.out.printf("%s", Integer.toBinaryString(15)); //2진수--> 1111
2) 8진수와 16진수에 접두사 붙이기
System.out.printf("%#o", 15); //--> 017
System.out.printf("%#x", 15); //--> 0xf
3) 실수 출력을 위한 지시자 %f - 지수형식(%e), 간략한 형식(%g)
float f = 123.4567890f;
System.out.printf("%f", f); //--> 123.456787 (소수점아래 6자리)
System.out.printf("%e", f); //--> 1.234568e+02
System.out.printf("%g", 123.456789); //--> 123.457
System.out.printf("%g", 0.00000001); //--> 1.00000e-8
4) 정렬
System.out.printf("[%5d]%n", 10); ---> [ 10] 5글자 우측정렬
System.out.printf("[%-5d]%n", 10); ---> [10 ] 5글자 좌측정렬
System.out.printf("[%05d]%n", 10); ---> [00010] 0으로 채움