JAVA printf()

nathan·2021년 4월 6일
0

JAVA

목록 보기
4/45
post-thumbnail

printf()

println()의 단점

  • 출력형식 지정불가
  • 실수의 자리수 조절 불가 - 소수점 n자리만 출력하려면?
    • System.out.println(10.0/3); // 3.3333333333333335
    • System.out.printf("%.2f", 10.0/3); // 3.33
  • 10진수로만 출력된다. - 8진수, 16진수로 출력하려면?
    • System.out.println(0x1A); // 26(10진수로 출력됨)
    • System.out.printf("%d", 0x1A) // 26 (10진수)
    • System.out.printf("%X", 0x1A) // 1A (16진수)

printf() 의미 : 서식을 지정해서 출력한다.(formal string)

전체 출력 자릿수 및 소수 자릿수를 제한할 수 있으며, 여러 형식을 지정할 수 있다.

코드

System.out.printf("형식문자열",1,2, ...)

형식 문자열에 들어갈 내용

%[argument_index$] [flags] [width] [.precision] conversion
% (값의 순번) / (-,0) / (전체 자릿수) / (소수 자릿수) / (반환 문자)


1. argument_index$

public class Main {
  public static void main(String[] args) {
    System.out.printf("%3$s, %2$s, and %1$s",  "A",  "B", "C"); // C, B, and A
  }
}

2. flags

- : left-justify ( default is to right-justify ) (왼쪽 정렬)
+ : output a plus ( + ) or minus ( - ) sign for a numerical value (양수, 음수 부호 나타냄)
0 : forces numerical values to be zero-padded ( default is blank padding ) (공백을 0으로 채움)
, : comma grouping separator (for numbers > 1000) (1,000,000~)
: space will display a minus sign if the number is negative or a space if it is positive (음수일 때 부호 나타냄)

3. conversion

Conversion-Characters:
%d : decimal integer [byte, short, int, long]
%f : floating-point number [float, double]
%c : character Capital C will uppercase the letter
%s : String Capital S will uppercase all the letters in the string
%h : hashcode A hashcode is like an address. This is useful for printing a reference
%n : newline Platform specific newline character- use %n instead of \n for greater compatibility

4. example

System.out.printf("Total is: $%,.2f%n", dblTotal);
System.out.printf("Total: %-10.2f: ", dblTotal);
System.out.printf("% 4d", intValue);
System.out.printf("%20.10s\n", stringVal);
String s = "Hello World";
System.out.printf("The String object %s is at hash code %h%n", s, s);

(참고) : format()

String class format( ) method:
형식화한 문자열을 만들거나 변수에 할당할 때 String class의 format() method를 사용할 수 있다.
사용 방법은 printf()에서와 동일하다.
format() method는 String에 대한 reference를 반환한다.

Example:
String grandTotal = String.format("Grand Total: %.2f", dblTotal)


참고 : java_printf_quick_reference


자바의 정석 기초편 Example 내용 추가

public class PrintEx2 {
    public static void main(String[] args) {
        System.out.printf("[%5d]%n", 10);
        System.out.printf("[%5d]%n", 1234567);  // 잘리지 않고 그대로 출력됨
        System.out.printf("[%-5d]%n", 10);
        System.out.printf("[%05d]%n", 10);

        double d = 1.23456789;
        System.out.printf("%.6f%n", d);
        System.out.printf("%14.10f%n", d);

        System.out.printf("[%s]%n", "www.codechobo.com");
        System.out.printf("[%20s]%n", "www.codechobo.com");
        System.out.printf("[%-20s]%n", "www.codechobo.com");
        System.out.printf("[%.10s]%n", "www.codechobo.com"); // 잘려서 출력됨

    }
}

출력 내용

[   10]
[1234567]
[10   ]
[00010]
1.234568
  1.2345678900
[www.codechobo.com]
[   www.codechobo.com]
[www.codechobo.com   ]
[www.codech]
profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글