▸JAVA/라이브러리(API)

java.lang.String (문자열) 주요 메소드 [4/4]

코데방 2019. 12. 10.
728x90

[ format() ]

  • static 메소드로 인스턴스 없이 사용 가능
  • C언어 printf() 와 비슷한 형태로 형식지정자를 사용해서 출력 가능

1. conversion (형식지정자)

여러가지 형식지정자가 있지만 가장 많이 쓰이는 것은 %d(10진수 정수형), %f(실수형), %s(문자열)이 있습니다. 이 외에도 %x(16진수 정수형), %o(8진수 정수형)이 있습니다. C언어와 거의 같습니다. 형식지정자 및 형식지정자와 짝이 맞는 값을 제외하고 다른 옵션은 선택사항입니다.

2. argument_index 옵션 (1$ : 첫번째 인자, 2$ : 두번째 인자...)

원래 순서대로 출력되는데 그 순서를 바꿔서 출력이 가능합니다. 하지만 숫자를 변수로 사용할 수 없기 때문에 어차피 수동으로 코딩해야해서 자주 쓸 일은 없을 것 같습니다.

package study.first;

public class Study {

	public static void main(String[] args) {

		String a = "abc";
		String b = "efg";
		System.out.println(String.format("%s %s", a, b));	// "abc efg"
		System.out.println(String.format("%2$s %1$s", a, b));	// "efg abc"		
	}
}

 

3. width 옵션 (%10s : 10글자로 출력)

출력 길이를 지정해주는 옵션입니다. 가장 사용할 일이 많습니다. 출력할 글자보다 길면 앞을 공백으로 채우고 가장 마지막에 출력해줍니다(우측 정렬). 출력할 글자보다 짧게 지정하면 지정하지 않는 것과 동일합니다.

 

[ %s, 문자열 ]

원본 문자열 출력의 길이를 제한하고 싶으면 ".길이" 형태로 넣어주면 됩니다. 이 경우 원본 문자열보다 크면 지정하지 않은 것과 동일합니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		String a = "abc";

		System.out.println(String.format("%10s", a));
		System.out.println(String.format("%.1s", a));
		
		System.out.print(String.format("%.10s", a));
		System.out.println("끝");
	}
}

 

 

[ %d, 10진수 정수형 ]

제가 알기로 정수형은 전체 출력 길이 조정만 되고 자를 수가 없습니다. 문자열로 한번 바꿨다가 잘라줘야 할 것 같습니다. 혹시 아시는 분은 댓글 부탁드립니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		int a = 123456;

		System.out.println(String.format("%10d", a));
		System.out.println(String.format("%1s", a));		
	}
}

 

 

[ %f, 실수형 ]

실수형은 전체 크기 지정 및 출력할 소숫점 자리수 조정이 가능합니다. 마지막 소숫점 자리는 그 다음 숫자를 반올림해서 만들어줍니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		double a = 12345.00005;

		System.out.println(String.format("%20f", a));
		System.out.println(String.format("%.4f", a));	// 해당 자릿수까지 출력 (반올림함)
		System.out.println(String.format("%20.4f", a));		
	}
}

 


 

4. flag 옵션

플래그 옵션은 width옵션 앞에 들어갑니다. 정렬이나 숫자 단위 표시 등 출력되는 형식을 바꿔줍니다.

 

[ -, 왼쪽 정렬 ]

기본이 오른쪽 정렬이기 때문에 -를 붙여주면 왼쪽에 먼저 출력 후 공백을 출력해줍니다. 모든 타입 공통입니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		String a = "abc";
		int b = 12345;
		double c = 12345.00005;
		
		System.out.println(String.format("%-10s", a) + "끝");
		System.out.println(String.format("%-10d", b) + "끝");
		System.out.println(String.format("%-20f", c) + "끝");
	}
}

 

 

[ 0, 정수 및 실수 공백 대신 0으로 채우기 ]

width를 늘려서 공백이 생긴 앞부분을 0으로 채워줍니다. - flag를 사용해서 왼쪽 정렬시 사용할 수 없습니다. 숫자에서 앞부분을 0으로 채우면 빈칸 대신이라는 구분이 되지만 뒷부분을 0으로 채우면 숫자 자체가 달라질 수 있기 때문입니다. 정수 및 실수에만 사용 가능합니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		int b = 12345;
		double c = 12345.00005;
		
		System.out.println(String.format("%20d", b) + "끝");
		System.out.println(String.format("%20f", c) + "끝");

		System.out.println(String.format("%020d", b) + "끝");
		System.out.println(String.format("%020f", c) + "끝");
	}
}

 

 

[ +, 정수 및 실수 부호 표시 ]

부호를 표시해줍니다. 음수일 경우는 원래 부호가 붙기 때문에 똑같지만 양수도 +기호를 붙여줍니다. 역시 숫자 전용입니다. 0 flag와 같이 사용하면 제일 가장 앞에 기호가 붙습니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		int b = 12345;
		double c = -12345.00005;
		
		System.out.println(String.format("%+20d", b) + "끝");
		System.out.println(String.format("%20f", c) + "끝");
		System.out.println(String.format("%+020d", b) + "끝");
		System.out.println(String.format("%020f", c) + "끝");
	}
}

 

 

[ (, 정수 및 실수 부호표시 ]

+ 기호와 같은 기능이지만 부호 자체를 표시하지 않고 음수에 괄호 표시를 해줍니다. 주로 회계분야에서 음수를 괄호로 표시합니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		int b = 12345;
		double c = -12345.00005;
		
		System.out.println(String.format("%-(20d", b) + "끝");
		System.out.println(String.format("%-(20f", c) + "끝");
		System.out.println(String.format("%(020d", b) + "끝");
		System.out.println(String.format("%(020f", c) + "끝");
	}
}

 

 

[ 콤마(,), 숫자 단위 표시 ]

긴 숫자를 보기 좋게 1000 단위 표시를 해줍니다.

 

package study.first;

public class Study {

	public static void main(String[] args) {

		int b = 12345;
		double c = -12345.00005;
		
		System.out.println(String.format("%-,20d", b) + "끝");
		System.out.println(String.format("%-,20f", c) + "끝");
		System.out.println(String.format("%,(020d", b) + "끝");
		System.out.println(String.format("%,(020.1f", c) + "끝");
	}
}
728x90

댓글

💲 추천 글