- 지금까지 화면에 출력할 때 println(0을 써왔는데, println()은 사용하기엔 편하지만 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
- 같은 값이라도 다른 형식으로 출력하고 싶을 때가 있다. 예를 들면, 소수점 둘째자리까지만 출력한다거나, 정수를 16진수나 8진수로 출력한다거나. 이럴 때 printf()를 사용하면 된다.
- printf()는 '지시자(specifier)'를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다.
- '지시자'는 값을 어떻게 출력할 것인지를 지정해주는 역할을 한다.
- 정수형 변수에 저장된 값을 10진 정수로 출력할 때는 지시자 '%d'를 사용하며, 변수의 값을 지정된 형식으로 변환해서 지시자 대신 넣는다.
- 예를 들어 int 타입의 변수 age의 값이 14일 때, printf()는 지시자 '%d' 대신 14를 넣어서 출력한다.
System.out.printf("age:%d", age);
→ System.out.printf("age:%d", 14);
→ System.out.printf("age:14"); // "age:14"가 화면에 출력된다.
- 만일 출력하려는 값이 2개라면, 지시자도 2개를 사용해야하며 출력될 값과 지시자의 순서는 일치해야 한다.
- 물론 3개 이상의 값도 지시자를 지정해서 출력할 수 있으며 개수의 제한은 없다.
System.out.printf("age:%d year:%d, age, year);
→ System.out.printf("age:%d year:%d, 14, 2017);
- println()과 달리 printf()는 출력 후 줄바꿈을 하지 않는다.
- 줄바꿈을 하려면 지시자 '%n'을 따로 넣어줘야 된다.
- '%n' 대신 '\n'을 사용해도 되지만, OS마다 줄바꿈 문자가 다를 수 있기 때문에 '%n'을 사용하는 것이 더 안전하다.
System.out.printf("age:%d", age); // 출력 후 줄바꿈을 하지 않는다.
System.out.printf("age:%d%n", age); // 출력 후 줄바꿈을 한다.
| 지시자 |
설명 |
| %b |
불리언(boolean) 형식으로 출력 |
| %d |
10진(decimal) 정수의 형식으로 출력 |
| %o |
8진(octal) 정수의 형식으로 출력 |
| %x, %X |
16진(hexa-decimal) 정수의 형식으로 출력 |
| %f |
부동 소수점(floating-point)의 형식으로 출력 |
| %e, %E |
지수(exponent) 표현식의 형식으로 출력 |
| %c |
문자(character)로 출력 |
| %s |
문자열(string)로 출력 |
- 정수를 출력할 때는 지시자 '%d'를 사용하는데, 출력될 값이 차지할 공간을 숫자로 지정할 수 있다.
- 여러 값을 여러 줄로 간격 맞춰 출력할 때 꼭 필요한 기능이다.
- 지시자 '%x'와 '%o'에 '#'를 사용하면 접두사'0x'와 '0'이 각각 붙는다. 그리고 '%X'는 16진수에 사용되는 접두사와 영문자를 대문자로 출력한다.
- 10진수를 2진수로 출력해주는 지시자는 없기 때문에, 정수는 2진 문자열로 변환해주는 'Integer.toBinaryString(int i)'를 사용해야 한다.
- 이 메서드는 정수를 2진수를 변환해서 문자열로 반환하므로 지시자 '%s'를 사용한다.
System.out.printf("binNum=%s%n", Integer.toBinaryString(binNum));
- 그리고 C언어에서는 char타입의 값을 지시자 '%d'로 출력할 수 있지만, 자바에서는 허용되지 않는다.
- 아래와 같이 int타입으로 형변환해야만 '%d'로 출력할 수 있다.
System.out.printf("c=%c, %d %n", c, (int)c); // 형변환이 꼭 필요하다.
- 실수형 값의 출력에 사용되는 지시자는 '%f', '%e', '%g'가 있는데, '%f'가 주로 쓰이고 '%e'는 지수형태로 출력할 때, '%g'는 값을 간략하게 표현할 때 사용한다.
- '%f'는 기본적으로 소수점 아래 6자리까지만 출력하기 때문에 소수점 아래 7자리에서 반올림한다.
- 지시자 '%s'에도 숫자를 추가하면 원하는 만큼의 출력 공간을 확보하거나 문자열의 일부만 출력할 수 있다.
- 지정된 숫자보다 문자열의 길이가 작으면 빈자리는 공백으로 출력된다.
- 공백이 있는 경우 기본적으로 우측 끝에 문자열을 붙이지만, '-'를 붙이면 좌측 끝에 붙인다.
- 그리고 '.'을 붙이면 문자열의 일부만 출력할 수 있다.