Helmi

자바의 정석ch2 (12,13) printf를 이용한 출력 본문

JAVA/Java의 정석

자바의 정석ch2 (12,13) printf를 이용한 출력

Helmi 2023. 3. 19. 10:00

ch2 - 12,13 printf를 이용한 출력

1. 형식화된 출력 : printf()

▶ 단점 : 출력형식 지정 불가

1) 실수의 자리수 조절 불가

- 소수점 n자리만 출력하려면?

System.out.println(10.0/3); //3.333333.....

2) 10진수로만 출력 된다.

- 8진수, 16진수로 출력하려면?

System.out.println(0x1A); //26(10진수)

 

▶ printf()로 출력형식 지정 가능

System.out.printf("%.2f", 10.0/3); //3.33 (.2f = 소수점 둘째 자리까지) 
System.out.printf("%d", 0x1A); //26 (%d= 10진수) 
System.out.printf("%X", 0x1A); //1A (%X = 16진수)

 

 

2. printf()의 지시사

지시사
설명
%b
불리언 (boolean) 형식 출력 (정수)
%d
10진 (decimal) 정수 형식 출력 (정수)
%o
8진 (octal) 정수 형식 출력 (정수)
%x, %X
16진 (hexa-decimal) 정수 형식 출력 (정수)
%f
부동 소수점 (floating-point) 형식 출력 (실수)
%e, %E
지수 (exponent) 표현식 형식 출력 (실수)
%c
문자 (character)로 출력 (문자)
%s
문자열 (string)로 출력 (문자)
System.out.printf("age:%d year:%d\n", 14, 2017);

-> "age:14 year:2017\n"이 화면에 출력됨

(\n = 개행문자 줄바꿈)

System.out.printf("age:%d:, age); //출력 후 줄바꿈을 하지 않는다. 
System.out.printf("age:%d%n", age); // 출력 후 줄바꿈을 한다.

① 정수를 10진수, 8진수, 16진수로 출력

System.out.printf("%d", 15); //15 10진수 
System.out.printf("%o", 15); //17 8진수 
System.out.printf("%x", 15); //f 16진수 
System.out.printf("%s", Integer.toBinaryString(15)); //1111 2진수

② 8진수와 16진수에 접두사 붙이기

System.out.printf("%#o", 15); //017 
System.out.printf("%#x", 15); //0xf 
System.out.printf("%#X", 15); //0XF

③ 실수 출력을 위한 지시사 %f - 지수형식(%e), 간략한 형식(%g)

float f = 123.4567890f; 
System.out.printf("%f", f); //123.456787 소수점 아래 6자리 (8-> 반올림) 
System.out.printf("%e", f); //1.234568e+02 지수형식 (e+02 = 10의 2승) 
System.out.printf("%g", 123.456789); //123.457 간략한 형식 
System.out.printf("%g", 0.00000001); //1.00000e-8 간략한 형식

+) 띄어쓰기

System.out.printf("[%5d]%n, 10); // [ 10] 
System.out.printf("[%-5d]%n, 10); //[10 ] (왼쪽정렬) 
System.out.printf("[%05d]%n, 10); //[00010]

+) %전체자리.소수점아래자리f

System.out.printf("d=%14.10f%n", d); //전체 14자리 중 소수점 아래 10자리
앞)  빈자리를 공백으로 채움 / 뒤)빈자리를 0으로 채움

+) stirng 부분출력

System.out.printf("[%s]%n", url) //[www.codechobo.com] 
System.out.printf("[%20s]%n", url) //[ www.codechobo.com] 
System.out.printf("[%-20s]%n", url) //[www.codechobo.com ] 
System.out.printf("[%.8s]%n", url) //[www.code]