본문 바로가기

JAVA/Study

11. printf과 서식지정자 - printf , Format Specifiers

    public static void main(String[] args) {
        //서식지정자를 이용한 출력 (Format Specifiers)
        int i = 236;
        float z = 16f;
        char c = 'K';
        char d = 'I';
        char e = 'M';
        String s = "KIM";
        float f = 3.14f;
        double g = 3.141592d;
        System.out.printf("i를 10진수로 출력 : %d\n", i); //printf는 형식을 나타내는 문자
        // %d 는 decimal =10진수 \n은 출력 후 엔터
        // %d같은 형식이 n개 들어가면 ,i같은 값이 n개 만큼 들어가야한다
        System.out.printf("i를 참/거짓 출력 : %b\n", i); //%b = bit ,boolean
        System.out.printf("i를 8진수로 :  %o\n", i); //%o  otal 8진수
        System.out.printf("i를 16진수로 : %x\n",i); // %X를 대문자로 넣을경우 EC가 대문자로나옴
        System.out.printf("i를 16진수로 : %X\n",i); // heX 16진수
        //  System.out.printf("i를 지수 형태로 출력 : %e \n",i ); // i가 정수라 실수로 불가
        System.out.printf("16.000000을 지수 형태로 출력 : %e \n",z );
        //
        System.out.printf("%c %c %c\n" , c,d,e);
        System.out.printf("문자열 : %s\n", s);
        System.out.printf("실수 : %f\n" , f);
        System.out.printf("실수2 : %f\n" , g);
    }

}

출력결과
i를 10진수로 출력 : 236
i를 참/거짓 출력 : true
i를 8진수로 :  354
i를 16진수로 : ec
i를 16진수로 : EC
16.000000을 지수 형태로 출력 : 1.600000e+01 
K I M
문자열 : KIM
실수 : 3.140000
실수2 : 3.141592

    public static void main(String[] args) {
        //정수, 문자열, 실수 지시자 세부적으로 출력 지시(제어)
        int d =1234;
        double f =2345.123456789d;
        String s = "I\'m a Boy";

        System.out.printf("%6d", d); //왼쪽 2칸 ,즉 자리수가 6보다 작으면 왼쪽에 남은 자리수만큼 채움
        System.out.printf("%-6d",d); //오른쪽 2칸
        System.out.printf("%d\n", d); //그대로 출력
        System.out.printf("%06d\n\n",d); // 남는 자리수만큼 0으로 채운다
//      System.out.printf("%.2d\n",d); 불가
       
        System.out.printf("%f\n",f); //f값 출력(기본값 , 소수점6자리)
        System.out.printf("%15f\n",f); //소수점 포함 11글자라 앞에 4칸띄움
        System.out.printf("%.8f\n",f); //마지막 자리수 반올림해서 소수점 8번째까지 출력
        System.out.printf("%11.4f\n\n",f); // 마지막수 반올림해서 소수점 4번째까지 출력
        //9글자라 남은자리수 공백 2칸 채움
       
        System.out.printf("%s\n",s); //s값 출력
        System.out.printf("%15s\n",s); //6 i'm a boy 의 띄어쓰기포함 9글자 제외한 6글자만큼 앞에 공백채움
        System.out.printf("%-6s\n",s);// 총 글자수가 6글자가 넘어가니 뒤에 공백을 채우지않고 그냥 출력
      // 즉, 앞에붙는 15,6 등은 글자수를 제한하는게 아닌
      // 이 숫자보다 출력하는 글자수가 적으면 그것을 공백으로 채워넣어라 라는 의미이다
    }

}

출력값

 

  12341234  1234
001234

2345.123457
    2345.123457
2345.12345679
  2345.1235

I'm a Boy
      I'm a Boy
I'm a Boy