STRING STATINIAI METODAI

Java String copyValueOf() metodas

String.copyValueOf() nukopijuoja char masyvo simbolius ir iš jų sukuria naują String. Galima kopijuoti visą masyvą arba tik pasirinktą jo dalį.

Kodėl tai statinis metodas?

Metodas kviečiamas per klasės pavadinimą String, nes jam nereikia jau sukurto teksto objekto:

String tekstas = String.copyValueOf(raides);

String kairėje yra grąžinamos reikšmės tipas. Antrasis String prieš tašką yra klasė, kuriai priklauso statinis metodas. Rašyti tekstas.copyValueOf(...) nereikia.

Viso char masyvo kopijavimas

char[] raides = {'L', 'a', 'b', 'a', 's'};
String tekstas = String.copyValueOf(raides);

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

Labas

  1. char[] masyvas saugo penkis atskirus simbolius.
  2. String.copyValueOf(raides) perskaito visus masyvo elementus.
  3. Simboliai ta pačia tvarka nukopijuojami į naują String.
  4. println() parodo vientisą tekstą Labas.

Dvi metodo versijos

String.copyValueOf() perkrovos
SintaksėPaskirtis
copyValueOf(char[] data)Nukopijuoja visus masyvo simbolius.
copyValueOf(char[] data, int offset, int count)Kopijuoja count simbolių, pradėdamas nuo indekso offset.

Abi versijos grąžina naują String objektą. Šie metodai veikia taip pat kaip atitinkamos String.valueOf(char[]) versijos.

Tik pasirinktos dalies kopijavimas

char[] uzrasas = {'P', 'i', 'e', 't', 'ū', 's', ':', ' ', '1', '2'};
String zodis = String.copyValueOf(uzrasas, 0, 6);

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

Pietūs

  1. Masyve yra visas užrašas Pietūs: 12.
  2. offset reikšmė 0 reiškia, kad kopijuoti pradedama nuo pirmo simbolio.
  3. count reikšmė 6 nurodo nukopijuoti šešis simbolius.
  4. Dvitaškis, tarpas ir skaitmenys lieka už pasirinkto intervalo ribų.

offset nėra pabaigos indeksas

char[] tekstas = {'A', 'B', 'C', 'D', 'E'};
String dalis = String.copyValueOf(tekstas, 1, 3);

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

BCD

Skaičius 1 yra pradžios indeksas, todėl pirmasis kopijuojamas simbolis yra B. Skaičius 3 yra simbolių kiekis, o ne pabaigos indeksas, todėl nukopijuojami B, C ir D.

Sukurtas String nuo masyvo nebepriklauso

char[] raides = {'k', 'a', 'v', 'a'};
String zodis = String.copyValueOf(raides);

raides[0] = 's';

System.out.println(raides);
System.out.println(zodis);
Konsolės rezultatas

sava
kava

  1. Iš pradžių masyvas sudaro žodį kava.
  2. copyValueOf() nukopijuoja simbolius į naują String.
  3. Vėliau pirmasis masyvo simbolis pakeičiamas iš k į s.
  4. Masyvas tampa sava, tačiau anksčiau sukurtas nekintamas String lieka kava.

Dažnos klaidos

  • Perdavus null vietoje masyvo, įvyksta NullPointerException.
  • Neigiamas offset ar count yra netinkamas.
  • Jei offset + count peržengia masyvo ribą, įvyksta IndexOutOfBoundsException.
  • Metodas priima char[], o ne String[] ar kitokio tipo masyvą.

Kada naudoti copyValueOf()?

Metodas naudingas, kai tekstą gauni kaip keičiamą char masyvą ir nori sukurti nuo jo nepriklausomą, nekintamą String. Kasdieniame kode dažniau sutiksi String.valueOf(char[]) arba konstruktorių new String(char[]); copyValueOf() suteikia tą pačią aiškią kopijavimo prasmę.