CH 2) printf를 이용한 출력

sim·2023년 2월 22일

자바의 정석

목록 보기
5/20

println()의 단점

: 출력형식 지정 불가
1) 실수의 자리수 조절불가
2) 10진수로만 출력됨. (8진수, 16진수 안됨)

➰ printf()

: 지시자(specifier)를 통해 변수의 값을 여러가지 형식으로 변환하여 출력할 수 있음.

  • 정수출력 (JavaAPI -> Formatter)
    1) %b : boolean 형식
    2) %d : 10진수 형식 (decimal)
    3) %o : 8진수 형식 (octal)
    4) %x, %X : 16진수 형식 (hexa-decimal)
  • 실수출력
    1) %f : 부동 소수점 형식 (floating-point) >> 소수점 아래 6자리까지만 출력
    2) %e, %E : 지수 표현식의 형식 (exponent)
    + %g : 값을 간략하게 표현할 때 사용
    + 전체 자리수와 소수점 아래의 자리수를 지정할 수도 있음.
double d = 1.23456789;
System.out.printf("d=%14.10f%n", d); // 전체 14자리 중 소수점 아래 10자리
// 출력값> (공백)vv1.2345678900(빈자리 00으로 채움)
  • 문자출력
    1) %c : 문자 형식 (character)
    2) %s : 문자열 형식 (string)
    + %s에도 숫자를 추가하면 원하는 만큼의 출력공간을 확보하거나 문자열의 일부만 출력할 수 있음.
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글자만 출력

printf()의 지시자

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으로 채움
profile
sim

0개의 댓글