„Vreau să vă spun și despre metoda String.format ”.

„Este o metodă statică a clasei String , dar este foarte utilă. Permiteți-mi să iau o abordare indirectă.”

„Dacă trebuie să afișați mai multe variabile pe o singură linie de text, cum ați proceda?”

"Ce text?"

„Asta, de exemplu:”

Având în vedere următoarele variabile:
String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;
Ieșire necesară:
User = {name: Bender, age: 12 years, friend: Fry, weight: 200 kg.}

„Aș face așa ceva:”

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.}");

— Nu foarte lizibil, nu?

— Cred că e în regulă.

„Dar dacă aveți nume lungi de variabile sau trebuie să apelați metode pentru a obține date, atunci nu ar fi foarte ușor de citit:”

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

— Ei bine, dacă ar fi așa, atunci da, n-ar fi foarte lizibil.

„Adevărul este că acest lucru se întâmplă tot timpul în programele reale, așa că vreau să vă arăt cum vă puteți simplifica viața cu metoda String.format.”

„Te rog spune-mi repede, ce fel de metodă magică este aceasta?”

„Puteți scrie codul de mai sus astfel:”

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);

„ Primul parametru al metodei String.format este un șir de format care conține caractere speciale (%s, %d) oriunde dorim să punem valori.”

„După șirul de format, trecem valorile care vor înlocui caracterele %s și %d.”

„Dacă trebuie să inserăm un șir, atunci scriem %s; dacă avem nevoie de un număr, atunci folosim %d.”

„Va fi mai ușor să vezi asta într-un exemplu:”

Exemplu
String s = String.format("a = %d, b = %d, c = %d", 1, 4, 3);
Rezultat:
s va fi egal cu «a = 1, b = 4, c = 3»

— Da, e foarte convenabil.

„Și o poți face și așa:”

Exemplu
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) );
Ieșire:
Warning! a = -1, b = 4, c = 3

"Hmm. Aceasta este o metodă cu adevărat utilă. Mulțumesc, Ellie."

„Dacă doriți să utilizați alte tipuri de date cu metoda formatului, iată un tabel care vă va ajuta:”

Simbol Tip
%s Şir
%d numere întregi: int, long etc.
%f numere reale: float, double
%b boolean
%c char
%t Data
%% semn de procente %

„De fapt, acești specificatori de format au și propriile setări și subsetări.”

„Dar acest lucru este suficient pentru a începe. Dacă nu, iată un link către documentația oficială:”

Link către material suplimentar