STRING STATINIAI METODAI

Java String valueOf() metodas

String.valueOf() paverčia skirtingų tipų reikšmes į tekstą. Jį galima naudoti su skaičiais, loginėmis reikšmėmis, simboliais, objektais ir char masyvais.

Skaičiaus pavertimas tekstu

int taskai = 42;
String tekstas = String.valueOf(taskai);

System.out.println(tekstas);
System.out.println(tekstas + " taškai");
Konsolės rezultatas

42
42 taškai

  1. Kintamasis taskai yra int tipo skaičius.
  2. String.valueOf(taskai) sukuria tekstinę šio skaičiaus išraišką.
  3. Rezultatas saugomas String kintamajame tekstas.
  4. Nuo šios vietos reikšmę galima jungti su kitu tekstu kaip įprastą String.

Kodėl valueOf() yra statinis metodas?

valueOf() kviečiamas per klasę String, nes metodas kuria tekstą iš perduotos reikšmės ir jam nereikia jau turimo String objekto:

String tekstas = String.valueOf(123);

Kairėje esantis String yra rezultato tipas. String prieš tašką yra klasė, kuriai priklauso statinis metodas.

Metodo sintaksė

Dažniausios String.valueOf() versijos
SintaksėPaskirtis
valueOf(int i)Paverčia sveikąjį skaičių į tekstą.
valueOf(long l)Paverčia didesnį sveikąjį skaičių į tekstą.
valueOf(float f)Paverčia float reikšmę į tekstą.
valueOf(double d)Paverčia double reikšmę į tekstą.
valueOf(boolean b)Grąžina tekstą true arba false.
valueOf(char c)Paverčia vieną simbolį į vieno simbolio tekstą.
valueOf(Object obj)Naudoja objekto toString() rezultatą arba tekstą null.
valueOf(char[] data)Sukuria tekstą iš viso simbolių masyvo.
valueOf(char[] data, int offset, int count)Sukuria tekstą iš pasirinktos simbolių masyvo dalies.

Nors metodas turi daug perkrovų, mokantis svarbiausia idėja viena: perduota reikšmė paverčiama į naują String.

Primityviųjų reikšmių pavertimas

boolean aktyvus = true;
char raide = 'J';
double kaina = 3.99;

System.out.println(String.valueOf(aktyvus));
System.out.println(String.valueOf(raide));
System.out.println(String.valueOf(kaina));
Konsolės rezultatas

true
J
3.99

  • boolean reikšmė tampa tekstu true arba false.
  • char reikšmė tampa vieno simbolio String.
  • Skaičius tampa tekstine skaičiaus išraiška, bet tai nėra skaičių formatavimo metodas.

Objekto pavertimas tekstu

class Vartotojas {
  private final String vardas;

  Vartotojas(String vardas) {
    this.vardas = vardas;
  }

  @Override
  public String toString() {
    return "Vartotojas: " + vardas;
  }
}

Vartotojas vartotojas = new Vartotojas("Ieva");
String tekstas = String.valueOf(vartotojas);

System.out.println(tekstas);
Konsolės rezultatas

Vartotojas: Ieva

Kai perduodamas objektas, String.valueOf(objektas) naudoja objekto toString() rezultatą. Dėl to klasėse verta perrašyti toString(), jei objektai bus rodomi tekstu, žurnaluose ar diagnostikoje.

null pavertimas tekstu

Object pasirinkimas = null;
String tekstas = String.valueOf(pasirinkimas);

System.out.println(tekstas);
Konsolės rezultatas

null

Jei Object reikšmė yra null, String.valueOf() nesukelia NullPointerException. Vietoje to metodas grąžina tekstą null. Tai skiriasi nuo tiesioginio pasirinkimas.toString(), kuris per null nuorodą neveiktų.

char masyvo pavertimas tekstu

char[] raides = {'J', 'a', 'v', 'a'};
String tekstas = String.valueOf(raides);

System.out.println(tekstas);
Konsolės rezultatas

Java

Su char[] masyvu valueOf() veikia panašiai kaip copyValueOf(): simboliai nukopijuojami į naują nekintamą String.

Tik dalies char masyvo pavertimas

char[] zinute = {'K', 'u', 'r', 's', 'a', 's', ':', ' ', 'J', 'a', 'v', 'a'};
String dalis = String.valueOf(zinute, 8, 4);

System.out.println(dalis);
Konsolės rezultatas

Java

  1. Masyve yra tekstas Kursas: Java.
  2. offset reikšmė 8 nurodo pradėti nuo simbolio J.
  3. count reikšmė 4 nurodo paimti keturis simbolius.
  4. Rezultatas yra naujas tekstas Java.

valueOf() ir jungimas su tuščiu tekstu

int lygis = 5;

String suTusciuTekstu = "" + lygis;
String suValueOf = String.valueOf(lygis);

System.out.println(suTusciuTekstu);
System.out.println(suValueOf);
Konsolės rezultatas

5
5

Abi eilutės duoda tą patį matomą rezultatą, tačiau String.valueOf(lygis) aiškiau pasako, kad tikslas yra reikšmės pavertimas tekstu. Tuščio teksto jungimas dažnai atsiranda greituose pavyzdžiuose, bet mokomajame ar komandos kode aiškus metodas lengviau skaitomas.

valueOf() nėra formatavimas

String.valueOf() sukuria paprastą tekstinę reikšmės išraišką. Jei reikia kontroliuoti skaitmenų po kablelio kiekį, lygiavimą, procentus ar lokalę, naudok String.format().

String.valueOf(3.5) grąžina 3.5, o String.format("%.2f", 3.5) gali grąžinti 3.50.

Dažnos klaidos

char[] raides = {'J', 'a', 'v', 'a'};
String tekstas = String.valueOf(raides, 2, 5);

System.out.println(tekstas);
Rezultatas

IndexOutOfBoundsException

  • Su char[] dalimi offset + count peržengia masyvo ribas.
  • Neigiamas offset arba count yra netinkamas.
  • Tikimasi specialaus skaičių formatavimo, nors valueOf() tik paverčia reikšmę tekstu.
  • Manoma, kad null objektas bus tuščias tekstas, nors rezultatas yra null.
  • Objektas neturi prasmingo toString(), todėl gaunamas techninis klasės pavadinimas ir hash reikšmė.

Kada naudoti String.valueOf()?

String.valueOf() naudok tada, kai reikia aiškiai paversti reikšmę į String: ruošiant tekstą išvedimui, jungiant reikšmes su tekstu, saugant paprastą tekstinę formą arba saugiai apdorojant galimą null objektą.