📌 자바 숫자 앞에 0으로 채우기
시퀀스를 생성하거나 특정한 경우에 정수 왼쪽에 자릿수만큼 0으로 채워야 하는 경우가 있다.
아래와 같이 5자리로 표현해야 하는 값이 있을 때
1
부족한 자리수만큼 정수값의 왼쪽에 0으로 채워야 한다.
00001
이러한 경우에 두 가지 방법을 이용하여 해결할 수 있다.
◾ String.format()를 이용한 방법
◾ DecimalFormat를 이용한 방법
번외로, 콘솔에 해당 값의 출력을 원하는 경우에는 System.out.printf()를 사용할 수도 있다.
1️⃣ String.format()
String.format(format, num) 함수는 인자로 전달된 format에 맞게 숫자를 문자열로 변환한다.
아래에서 "%0Nd"는 정수를 N개의 자릿수로 반환하며, 왼쪽의 비어있는 공간은 0으로 채운다는 의미이다.
public class Example {
public static void main(String[] args) {
int num = 1234;
String str = String.format("%06d", num);
System.out.println(str); // 001234
str = String.format("%010d", num);
System.out.println(str); // 0000001234
}
}
2️⃣ DecimalFormat
DecimalFormat는 new 연산자를 통해 객체를 초기화해야 사용할 수 있으며 초기화시 자릿수를 지정한다.
아래 예제와 같이 new DecimalFormat("000000")으로 자릿수(0의 개수)를 지정하여 객체를 초기화한다.
그 후 df.format(num)을 통해 비어있는 공간은 0으로 채워 변환된 값을 반환한다.
import java.text.DecimalFormat;
public class Example1 {
public static void main(String[] args) {
int num = 1234;
DecimalFormat df = new DecimalFormat("000000");
String str = df.format(num);
System.out.println(str); // 001234
df = new DecimalFormat("0000000000");
str = df.format(num);
System.out.println(str); // 0000001234
}
}
3️⃣ System.out.printf()
printf()는 String.format()과 같이 특정 형식으로 주어진 정수를 문자열로 변환할 수 있다.
또한, printf()는 변환된 값을 리턴하지 않고 콘솔에 출력하므로 제한된 상황에서만 사용성을 갖는다.
public class Example2 {
public static void main(String[] args) {
int num = 1234;
System.out.printf("%06d", num); // 001234
System.out.println();
System.out.printf("%010d", num); // 0000001234
}
}
📌 참고사이트
▪ codechacha :: java-fill-zeros-with-string
'Backend > Java (Spring)' 카테고리의 다른 글
[Java] 자바 문자열 반복하기(repeat) (0) | 2022.11.09 |
---|---|
[Java] DecimalFormat을 이용한 숫자 형식 변경 (0) | 2022.11.07 |
[Java] Map을 List로 변환하는 방법 (0) | 2022.08.24 |
[Java] 자바 옵셔널(Java Optional)이란? (0) | 2022.07.18 |
[MyBatis] 마이바티스 동적 쿼리 작성하기 (0) | 2022.06.15 |
최근댓글