보통 출력할려고 할 때 println을 많이 사용 할 것 입니다. 하지만 println 의 단점이 있는데 이것은 출력형식을 지정할 수 없다는 것 입니다.
좀 더 구체적으로 단점을 알아보자면
1. 실수의 자리수를 조절할 수 없습니다.그냥 실수 그대로 출력 된다는 말 입니다. 원하는 소수점 자리까지 출력되는것을 원할때 println을 사용하면 원하는 소수점 자리까지 출력 할 수 없습니다.
2. 10진수로만 출력된다는 것 입니다.
이 문제를 해결할수 있는 것이 printf() 입니다.
System.out.printf("%.(숫자)f", 17.0/3); // 소수점 (숫자) 자리까지 출력 합니다.
System.out.printf("%d", (값)); // 10진수로 출력
System.out.printf("%x", (값)); // 16진수로 출력
위의 코드처럼 printf() 를 사용하면 사용자가 출력 형태를 제어할 수 있습니다.
전체자리 : 출력되는 길이를 생성
소수점아래자리까지 : 말 그대로 입력한 숫자 소수점까지 출력 (뒤에 값이 남아있고 반올림 가능하다면 반올림 되서 출력)
전체자리 왼쪽에 아무것도 적지 않으면 출력 값이 오른쪽 정렬하고
"-" 를 적으면 왼쪽 정렬하고
0을 적으면 전체자리에 의해서 생긴 출력되는 길이에서 실제 출력되는 값 빼고 공백이 있다면 0으로 채워져서 출력된다.
System.out.printf("[%10d]", 10); // [ 10] 출력
System.out.printf("[%-10d]", 10); // [10 ] 출력
System.out.printf("[%010d]", 10); // [0000000010] 출력
위와 같이 출력 된니다.
만약 10이 아니고 값이 전체자리로 지정한 값의 길이보다 큰 값이라면 전체자리의 값 길이와 상관없이 출력 됩니다.