JAVA STRING

Java String konkatenacija

Konkatenacija – tai dviejų ar daugiau teksto eilučių sujungimas į vieną. Java kalboje tekstą galima jungti operatoriumi +, metodu concat() arba tam skirtomis pagalbinėmis klasėmis.

Teksto jungimas operatoriumi +

Pradedant mokytis patogiausia naudoti +. Java paima reikšmes iš kairės į dešinę ir sujungia jas į naują tekstą.

String vardas = "Ieva";
String pasisveikinimas = "Labas, " + vardas + "!";

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

Labas, Ieva!

  1. Kintamajame vardas saugomas tekstas Ieva.
  2. Operatorius + sujungia pasisveikinimą, vardą ir šauktuką.
  3. Rezultatas išsaugomas naujame kintamajame pasisveikinimas.

Tarpus reikia pridėti pačiam

Java automatiškai neįterpia tarpo tarp sujungiamų žodžių. Tarpą įrašome kaip atskirą eilutę " ".

String vardas = "Mantas";
String pavarde = "Kazlauskas";

String pilnasVardas = vardas + " " + pavarde;
System.out.println(pilnasVardas);
Konsolės rezultatas

Mantas Kazlauskas

Be viduryje esančio " " konsolėje matytume MantasKazlauskas.

Teksto jungimas su skaičiais

Kai bent viena iš + operacijos reikšmių yra String, Java skaičius paverčia tekstu.

String preke = "Obuoliai";
int kiekis = 3;
double kaina = 1.25;

System.out.println(preke + ": " + kiekis + " kg");
System.out.println("Kaina: " + kaina + " Eur");
Konsolės rezultatas

Obuoliai: 3 kg
Kaina: 1.25 Eur

Skaičių kintamieji lieka skaičiais. Jie paverčiami tekstu tik kuriant galutinę išvedamą eilutę.

Skliaustai pakeičia veiksmų tvarką

int pirmas = 4;
int antras = 6;

System.out.println("Suma: " + pirmas + antras);
System.out.println("Suma: " + (pirmas + antras));
Konsolės rezultatas

Suma: 46
Suma: 10

  1. Pirmoje eilutėje Java jau rado tekstą "Suma: ", todėl 4 ir 6 prijungia kaip simbolius.
  2. Antroje eilutėje skliaustai liepia pirmiausia apskaičiuoti 4 + 6.
  3. Tik gautas skaičius 10 prijungiamas prie teksto.

Metodas concat()

concat() prie vienos eilutės pabaigos prijungia kitą String reikšmę ir grąžina naują eilutę.

String pradzia = "Geros";
String pabaiga = " dienos!";

String sakinys = pradzia.concat(pabaiga);
System.out.println(sakinys);
Konsolės rezultatas

Geros dienos!

Skirtingai nuo +, metodas concat() priima tik tekstinę reikšmę.

String reikšmės yra nekintamos

Konkatenacija nepakeičia seno String objekto. Ji sukuria ir grąžina naują rezultatą, kurį reikia išsaugoti.

String tekstas = "Labas";

tekstas.concat(", Rasa");
System.out.println(tekstas);

tekstas = tekstas.concat(", Rasa");
System.out.println(tekstas);
Konsolės rezultatas

Labas
Labas, Rasa

  1. Pirmas concat() sukuria rezultatą, bet jis niekur neišsaugomas.
  2. Todėl pirmas println() vis dar išveda tik Labas.
  3. Antras rezultatas priskiriamas kintamajam tekstas, todėl vėliau matome visą pasisveikinimą.

Daug teksto pakeitimų su StringBuilder

Kai tekstas papildomas daug kartų, ypač cikle, patogiau naudoti ir jo metodą append().

String[] pirkiniai = {"duona", "pienas", "obuoliai"};
StringBuilder sarasas = new StringBuilder("Pirkiniai: ");

for (int i = 0; i < pirkiniai.length; i++) {
    if (i > 0) {
        sarasas.append(", ");
    }
    sarasas.append(pirkiniai[i]);
}

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

Pirkiniai: duona, pienas, obuoliai

StringBuilder papildo tą patį kuriamą tekstą, todėl tinka daugeliui nuoseklių sujungimų.

Reikšmių jungimas su String.join()

Jei tarp visų reikšmių reikia tokio pat skirtuko, galima naudoti String.join().

String dienos = String.join(", ",
        "pirmadienis", "antradienis", "trečiadienis");

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

pirmadienis, antradienis, trečiadienis

Pirmas argumentas ", " nurodo, ką Java turi įrašyti tarp kiekvienos reikšmės.

Kurį būdą pasirinkti?

Java teksto jungimo būdų palyginimas
BūdasKada patogu naudoti?
+Kelioms reikšmėms ir lengvai skaitomam kasdieniam kodui
concat()Kai sąmoningai jungiamos tik String reikšmės
StringBuilderKai tekstas papildomas daug kartų arba cikle
String.join()Kai reikšmes skiria vienodas tarpas, kablelis ar kitas skirtukas