본문 바로가기
프로그래밍 언어/자바의 정석 기초편

자바의 정석 기초편 ch2-12,13 printf를 이용한 출력

by life grow 2022. 5. 7.

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

printf()는 지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여

출력하는 기능을 가지고 있다.

 

2. print()의 지시자(1/3)

지시자: 값을 어떻게 출력할 것인지를 지시해주는 역할

여러개의 지시자를 한번에 같이 쓸 수 있다.

대신 값의 갯수도 지시자의 갯수와 같아야한다.

첫번째 값은 첫번째 지시자에 들어가고

두번째 값은 두번째 지시자에 들어간다.

 

printf()는 줄바꿈x

줄바꿈이 필요하면 형식 문자열 안에 개행문자를 넣어줘야한다.

개행문자로 %n을 써주는게 좋다.

 

2. print()의 지시자(2/3)

8진수에서 17에서 1은 8이다

%s는 String

 

(1) 정수를 10진수, 8진수, 16진수로 출력

2진수 : binary number

10진수: decimal

8진수: octal number

16진수: hexadecimal

 

2진수로 출력하는 지시자는 없다.

그래서 정수를 2진수로 변환해주는

Integer.toBinaryString()메서드를 사용해야한다.

이 메서드는 정수를 2진 문자열로 변환해준다.(이런게 있다 정도)

 

(2) 8진수와 16진수에 접두사 붙이기

접두사도 같이 출력되게 하려면 지시자 앞에 #을 붙이면 된다.

지시자 X를 대문자로 쓰면 접두사와 F 모두 대문자로 출력된다.

 

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

간략한 형식(%g)는 지시자 %f와 지시자 %e 중에서 

더 간략하게 표현할 수 있는 쪽을 선택해서 출력한다.

%f에서 123.456787이 나온 이유는 정밀도 때문이다.

%f의 정밀도가 7자리기 때문에 뒤에 숫자는 의미없는 숫자다.

 

e+10은 10²을 의미한다.

 

지시자 %f와 %e의 출력값이 다른 이유는?

실제로 저장된 값은 같은데 

마지막 값이 반올림되어서 보여주기 때문이다.

(실제 저장된 값을 반올림하는건 아니다!)

 

실수 출력시 %f

숫자에 0이 많이 들어갈 때는 %e를 사용해서

지수형태로 출력하면 된다.

 

2. print()의 지시자(3/3)

지시자에 숫자를 붙이면 값이 출력되는 자릿수를 조절할 수 있다.

-붙이면 왼쪽정렬된다.

 

지정될 자릿수보다 출력될 자릿수가 더 크면 지정된 자릿수와

상관없이 모두 출력된다.

 

%.10s하면 문자열의 일부만 잘라서 사용가능하다.