"También quiero hablarles sobre el método String.format ".

"Es un método estático de la clase String , pero es muy útil. Permítanme tomar un enfoque indirecto".

"Si necesita mostrar varias variables en una línea de texto, ¿cómo lo haría?"

"¿Qué texto?"

"Esto, por ejemplo:"

Dadas las siguientes variables:
String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;
Salida requerida:
User = {name: Bender, age: 12 years, friend: Fry, weight: 200 kg.}

"Lo haría algo como esto:"

String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;

System.out.println("User = {name: " + name + ", age: " + age + " years, friend: " + friend + ", weight: " + weight + " kg.}");

"No es muy legible, ¿verdad?"

"Creo que está bien".

"Pero si tiene nombres de variables largos o necesita llamar a métodos para obtener datos, entonces no sería muy legible:"

System.out.println("User = {name: " + user.getName() + ", age: " + user.getAge() + " years, friend: " + user.getFriends().get(0) + ", weight: " + user.getExtraInformation().getWeight() + " kg.}");

"Bueno, si ese fuera el caso, entonces, sí, no sería muy legible".

"El hecho es que esto sucede todo el tiempo en programas reales, así que quiero mostrarte cómo puedes simplificar tu vida con el método String.format".

"Por favor, dime rápido, ¿qué tipo de método mágico es este?"

"Puedes escribir el código de arriba así:"

String text = String.format("User = {name: %s, age: %d years, friend: %s, weight: %d kg.}",
user.getName(), user.getAge(), user.getFriends().get(0), user.getExtraInformation().getWeight())

System.out.println(text);

"El primer parámetro del método String.format es una cadena de formato que contiene caracteres especiales (%s, %d) donde queremos poner valores".

"Después de la cadena de formato, pasamos los valores que reemplazarán los caracteres %s y %d".

"Si necesitamos insertar una cadena, escribimos %s; si necesitamos un número, usamos %d".

"Será más fácil ver esto en un ejemplo:"

Ejemplo
String s = String.format("a = %d, b = %d, c = %d", 1, 4, 3);
Resultado:
s será igual a «a = 1, b = 4, c = 3»

"Sí, eso es muy conveniente".

"Y también puedes hacerlo así:"

Ejemplo
int a = -1, b = 4, c = 3;
String template;
 if (a < 0)
  template = "Warning! a = %d, b = %d, c = %d";
 else
  template = "a = %d, b = %d, c = %d";

System.out.println(String.format(template, a, b, c) );
Producción:
Warning! a = -1, b = 4, c = 3

"Hmm. Ese es un método realmente útil. Gracias, Ellie".

"Si desea utilizar otros tipos de datos con el método de formato, aquí hay una tabla que le ayudará:"

Símbolo Tipo
%s Cadena
%d enteros: int, long, etc.
%F números reales: flotante, doble
%b booleano
%C carbonizarse
%t Fecha
%% Signo de porcentaje %

"En realidad, estos especificadores de formato también tienen sus propias configuraciones y subconfiguraciones".

"Pero esto es suficiente para comenzar. Si no, aquí hay un enlace a la documentación oficial:"

Enlace a material adicional