println()은 사용하기 편하지만 변수의 값을 그대로 출력하므로 값을 변환하지 않고는 다른 형식으로 출력할수없다.
예를들어 소수점 둘째자리까지만 출력하거나, 정수를 16진수나 8진수로 출력한다던가. 이럴때 printf()를 사용하면 된다.
만일 출력해야하는 값이 2개라면 지시자 또한 2개를 사용해야하며, 출력될 값과 지시자의 순서도 일치해야한다.
또한 println()과 달리 줄바꿈을 하지 않기 때문에 줄바꿈 지시자 %n을 따로 넣어야한다.
*%n 은 개행문자이다.
지시자 중에서 자주 사용되는 것
지시자 | 설명 |
%b | 블리언(boolean) 형식으로 출력 |
%d | 10진(decimal) 정수의 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x, %X | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 부동 소수점(floating-point) 의 형식으로 출력 |
%e,%E | 지수(exponent)표현식의 형식으로 출력 |
%c | 문자(character) 로 출력 |
%s | 문자열(string) 로 출력 |
%d
System.out.printf("finger = [%5d]%n", finger); //finger =[ 10]
> 10 출력 (기본적으로 우측끝부터 출력)
System.out.printf("finger = [%-5d]%n", finger); //finger =[10 ]
> - 를 사용하면 왼쪽부터 출력
System.out.printf("finger = [%05d]%n", finger); //finger=[00010]
> 0을 사용하면 공백을 0으로 채워서 출력
%x , %o , %X
'#'을 사용하면 접두사 0x, 0이 각각 붙는다. 그리고 %X 는 16진수에 사용되는 접두사와 영문자를 대문자로 출력한다.
System.out.printf("hex=%x%n", hex); // hex = ffffffffffffffff
System.out.printf("hex=%#x%n", hex); // hex = 0xffffffffffff
System.out.printf("hex=%#X%n", hex); // hex = 0XFFFFFFFFFFFFFF
%s
정수를 2진 문자열로 변환해주는 'Integer.toBinaryString(int i)' 를 사용해야한다.
결과
System.out.println(10.0/3); : 10/3 으로 하면 끝까지 나오지 않아 10.0 으로 수정해야하는 불편함이 있다.
%f
기본적으로 소수점 아래 6자리까지만 출력한다. 소수점 아래 7자리에서 반올림
결과
정확한 결과 값을 위해서 float 대신 double을 쓴다.
'cording > 자바의정석' 카테고리의 다른 글
[Operator] 연산자, 우선순위와 결합규칙 (0) | 2022.03.25 |
---|---|
[Variable] 타입간의 변환 (0) | 2022.03.24 |
[Variable] 화면에서 입력받기 - Scanner (0) | 2022.03.23 |
[Variable] 변수의 타입 (0) | 2022.03.21 |
[Variable] 변수의 선언 (0) | 2022.03.17 |