oguri's garage

Java 문자열 조합, String.format()이 가독성에 좋은 이유 본문

개발하다/Java

Java 문자열 조합, String.format()이 가독성에 좋은 이유

oguri 2025. 10. 19. 23:52

왜 String.format()을 사용하는가

사용자 입력이나 변수를 특정 패턴의 문자열로 만들어야하는 상황이 있었다.
+ 연산자로도 할 수 있지만, 코드 리뷰와 협업 환경에서는 String.format()이 의도가 명확하게 보인다.

// + 연산자 방식
String result = parts[0] + " (" + parts[1] + ")";

// String.format() 방식
String result = String.format("%s (%s)", parts[0], parts[1]);

 

변수와 포맷이 한 곳에 있어 어떤 값이 어디에 들어가는지 한눈에 파악된다. 값이 많아질수록 이 차이는 더욱 두드러진다.

 

 




기본 사용법

String name = "홍길동";
int age = 30;
String message = String.format("%s (%d)", name, age);
System.out.println(message); // 홍길동 (30)


주요 포맷 지정자:

  • %s: 문자열
  • %d: 정수
  • %f: 실수
  • %c: 문자

 




실무에서 자주 쓰는 포맷 옵션

천 단위 구분

int price = 1234567;
String formatted = String.format("%,d원", price);
// 1,234,567원



자리수 맞춤

String aligned = String.format("%10s", "값");  // 10자리 확보
String number = String.format("%05d", 42);      // 00042



대소문자 변환

String upper = String.format("%S", "apple");  // APPLE



소수점 제어

double pi = 3.14159265;
String rounded = String.format("%.2f", pi);  // 3.14






패턴 변경에 유연하다

포맷 문자열만 수정하면 되므로 유지보수가 쉽다.

// 패턴 변경 전
String.format("%s (%s)", name, age);

// 패턴 변경 후 - 변수 순서는 그대로
String.format("%s - %s세", name, age);


StringBuilder와의 선택 기준

반복문 안에서 문자열을 계속 붙이는 경우에는 StringBuilder가 효율적이다.

// 대량 데이터 조합 - StringBuilder 사용
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append(i).append(",");
}

// 단순 패턴 조합 - String.format() 사용
String log = String.format("[%s] %s: %s", timestamp, level, message);


일반적인 파라미터 조합, 메시지, 로그 출력에는 String.format()이 가독성과 유지보수 면에서 우위에 있다.

 

 

 




주의사항

  • 너무 복잡한 패턴은 오히려 가독성을 해친다
  • 성능이 중요한 반복 작업에는 StringBuilder 고려
  • 포맷 지정자와 인자 타입이 맞지 않으면 런타임 에러 발생

 

 

 




정리

String.format()은 패턴 기반 문자열 생성에 최적화되어 있다. 코드의 의도가 명확하고, 협업과 유지보수에 유리하다.
대량 데이터 조합이 필요할 때만 StringBuilder로 전환하고, 그 외에는 String.format()을 기본으로 사용하는 것을 권장한다.

 

 




참고 문서