. Java의 정석

[Java] print(), println(), printf()

박인영 2021. 7. 2. 08:32

 

앞서 변수에 저장된 값을

콘솔에 출력하여 확인 할 때

print()와 println()을 사용한다는 것을 배웠다.

(변수의 사용, System.out.println(); 단축키, 더하기부호(+))

 

 

 

<print()>

System.out.print(1);
System.out.print(2);
System.out.print(3);

[실행결과]
123

 

 

 

<println()>

System.out.println(1);
System.out.println(2);
System.out.println(3);

[실행결과]
1
2
3

println()은 자동완성 기능이 있어 사용이 편하지만

변수의 값을 그대로 출력하기 때문에

값을 변환하지 않고서는 다른 형식으로 출력할 수 없다.

 

예를들면, 소수점 둘째자리까지만을 출력한다던가,

정수를 16진수 또는 8진수로 출력한다거나.

이럴때는 printf()를 사용하면 된다.

 

 

 

<printf()>

printf()는 '지시자(specifier)'를 통해

변수의 값을 여러가지 형식으로 변환하여

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

'지시자'는 값을 어떻게 출력할 것인지

지정해주는 역할을 한다.

 

예를 들면 int 타입 변수 age에 저장된 값을

10진수로 출력할 때는 지시자 %d를 사용하며,

16진수로 출력할 때는 지시자 %x를 사용한다.

int age = 36;
System.out.printf("%d", age);	// 36 --- (1)
System.out.println();
System.out.printf("%x", age);	// 24 --- (2)

[실행결과]
36
24

콤마(,) 뒤에 있는 변수(에 저장된 값) 또는 리터럴을

콤마 앞의 큰따옴표("")안에 형식으로 출력한다.

 

printf()는 print()처럼 줄바꿈을 하지 않기 때문에

위 예제처럼 문장사이에 println()을 넣지 않으면

3624로 출력한다.

아래 예제처럼 줄바꿈을 뜻하는 %n 지시자를 추가하는 것이 좋다.

System.out.printf("%d%n", age);
System.out.printf("%x%n", age);

[실행결과]
36
24

 

 

 

<지시자(specifier)의 종류>

자주 사용되는 printf()의 지시자는 다음과 같다.

 

 

 

<2진수로 출력해야 할 때>

10진수를 2진수로 출력해주는 지시자는 없기 때문에

정수를 2진 문자열로 변환해주는 

'Integer.toBinaryString(int i)'를 사용해야 한다.

결과값이 정수가 아닌 문자열이므로

String 타입의 변수에 저장해야 하며,

printf() 출력시 지시자는 %s로 해야 한다.

String bn = Integer.toBinaryString(10000);
System.out.printf("%s", bn);

[실행결과]
10011100010000