언어 자료구조 알고리즘/디딤돌 Java 언어 Part1

[Java] 6.5 포멧터, 6.5.1 String 클래스의 정적 메서드 format

언제나휴일 2016. 11. 21. 15:24
반응형

6.5 포멧터, 6.5.1 String 클래스의 정적 메서드 format


출간일 2016년 11월 28일

판매가 2000원

형태 ebook


이 책의 모든 내용은 http://ehpub.co.kr에 공개하고 있습니다.

학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.


 

 Java 언어에서는 원하는 형태로 출력을 지정할 수 있는 여러가지 방법을 제공하고 있습니다. 여기에서는 String 클래스의 정적 메서드 format Formatter 클래스를 이용하는 방법을 소개할게요.



6.5.1 String 클래스의 정적 메서드 format

 먼저 String 클래스의 정적 메서드는 다음처럼 포멧을 지정할 수 있습니다.

%[index$][flags][width]type


 포멧을 지정할 때 %type은 필수적인 항목이며 type은 어떤 출력 타입을 결정합니다.

 d(정수), x(16진수), o(8진수), f(실수), s(문자열), c(문자)


 다음은 String 클래스의 정적 메서드 format을 이용하여 % type을 사용하여 출력하는 예제입니다.

 

//String 클래스 format 메서드로 타입에 맞게 출력

public class Program {

        public static void main(String[] args){

               String sform = String.format("10 진수%d", 20);

               System.out.println(sform);            

              

               sform = String.format("16 진수%x", 20);

               System.out.println(sform);

              

               sform = String.format("8 진수%o", 20);

               System.out.println(sform);

              

               sform = String.format("실수 %f", 3.5);

               System.out.println(sform);

              

               sform = String.format("문자열 %s", "Hello");

               System.out.println(sform);

        }

}

10 진수20

16 진수14

8 진수24

실수 3.500000

문자열 Hello

[소스 6.24] String 클래스 format 메서드로 타입에 맞게 출력 예

 

 만약 여러 개의 값을 원하는 포멧을 출력할 때는 선택적으로 index를 명시할 수 있습니다. 인덱스는 % type 사이에 정수와 $를 사용합니다.

%[index$][flags][width]type

 

 다음은 여러 개의 값을 원하는 포멧으로 출력하는 예제입니다.

 

//String 클래스 format 메서드로 여러 개의 값을 원하는 형태로 출력

public class Program {

        public static void main(String[] args){

               String sform = "";

              

               sform = String.format("%1$d %2$s", 23,"홍길동");

               System.out.println(sform);

              

               sform = String.format(

                       "10진수:%1$d 8진수:%1$o 16진수:%1$x", 20);

               System.out.println(sform);            

        }

}

23 홍길동

10진수:20 8진수:24 16진수:14

[소스 6.25] String 클래스 format 메서드로 여러 개의 값을 원하는 형태로 출력 예

 

 출력 포멧을 지저할 때 flags 를 통해 정렬 방식, 부호 표시, 어떤 타입인지 명시, 빈 공간을 0으로 채우기, 음수일 때 괄호로 표시, 양수는 공백 출력 등을 할 수 있습니다.

%[index$][flags][width]type

‘-‘(왼쪽 정렬), ‘+’(부호 표시), ‘#’(어떤 타입인지 명시),

‘0’(빈 공간을 0으로 채움), ‘(‘(음수는 괄호로 표시), ‘ ‘(양수는 공백 출력)

 

//String 클래스 format 메서드에 flag 지정하여 출력

public class Program {

        public static void main(String[] args){

               String sform="";

               sform = String.format("[디폴트 정렬 %10d]", 27);

               System.out.println(sform);

               sform = String.format("[왼쪽 정렬 %-10d]", 27);

               System.out.println(sform);

               sform = String.format("[부호 표시 %+10d]", 27);

               System.out.println(sform);

               sform = String.format("[타입 명시 %#10x]", 27);

               System.out.println(sform);

               sform = String.format("[0 채우기 %010d]", 27);

               System.out.println(sform);

               sform = String.format("[음수는 괄호로 %(10d]", -27);

               System.out.println(sform);

               sform = String.format("[양수는 공백 % d]", 27);

               System.out.println(sform);

               sform = String.format("[양수는 공백 % d]", -27);

               System.out.println(sform);

        }

}

[디폴트 정렬         27]

[왼쪽 정렬 27        ]

[부호 표시        +27]

[타입 명시       0x1b]

[0 채우기 0000000027]

[음수는 괄호로       (27)]

[양수는 공백  27]

[양수는 공백 -27]

[소스 6.26] String 클래스 format 메서드에 flag 지정하여 출력 예

 

 마지막으로 폭을 지정할 때 width를 사용합니다. [소스 6.26]에서 이미 width를 사용하였으므로 별도의 예제는 제시하지 않을게요.


[Java] 6.5.2 Formatter 클래스 사용하여 포멧에 맞게 출력


반응형