[Java]String.format()/formatted()

Euiyeon Park·2024년 9월 2일
0

Java

목록 보기
7/16
post-thumbnail

String.format()String.formatted()가 헷갈려서
System.out.println()만 주구장창 갈기다가 쓰는 포스팅이랄까 ..?

String.format()

String.format()은 정적 메서드로 String 클래스에서 직접 호출된다.
이 메서드는 포맷 문자열(format string)과 함께 여러 인수를 받아,
해당 인수를 지정된 형식에 맞게 문자열로 변환
한다.

String formattedString = String.format(String format, Object... args);
  • format : 형식 지정자를 포함하는 문자열
  • args : 형식 지정자에 대응하는 값들을 나열
int age = 28;
double height = 163.3;
String name = "Haley";

String profile = "Name: %s, Age: %d, height: %.1f";
String formattedProfile = String.format(profile, name, age, height);
System.out.println(formattedProfile);

// 또는
System.out.println(String.format("Name: %s, Age: %d, height: %.1f", name, age, height));

formatted()

String.formatted()는 Java 15에서 추가된 인스턴스 메서드다.
이 메서드는 기존의 문자열에 대해 직접 포맷팅을 수행한다.
포맷팅을 위한 문자열에 직접 formatted() 메서드를 호출해 인수를 전달한다.

String formattedString = "formatString".formatted(Object... args)
  • format : 형식 지정자를 포함하는 문자열
  • args : 형식 지정자에 대응하는 값들을 나열
int age = 28;
double height = 163.3;
String name = "Haley";

String profile = "Name: %s, Age: %d, height: %.1f";
String formattedProfile = profile.formatted(name, age, height);
System.out.println(formattedProfile);

// 또는
System.out.println("Name: %s, Age: %d, height: %.1f".formatted(name, age, height));

🪄 주요 차이점

String.format()정적 메서드이기때문에 클래스를 통해 호출하며,
포맷 문자열과 인수를 전달한다.

formatted()인스턴스 메서드로, 포맷 문자열에 직접 메서드를 호출하며 인수를 전달한다.
이 방식은 기존 문자열을 이용해 포맷팅할 때 더 직관적이고 간결하게 사용할 수 있으며
메서드 체이닝 스타일로 코드를 작성할 수 있다.

[참고] 메서드 체이닝(Method Chaining)
하나의 메서드를 호출한 결과로 또 다른 메서드를 호출하는 방식으로
여러 메서드를 연속해서 호출할 수 있어 코드를 간결하게 작성할 수 있다.

String name = "Haley";
String result = "Hello, %s".formatted(name).toUpperCase();

메서드 체이닝의 실행 방향(흐름은) 왼쪽에서 오른쪽
첫 번째 메서드가 실행된 후 그 반환 값을 다음 메서드가 사용한다.

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글