StringBuilder
String vs StringBuilder
Muutumatu ja muudetav andmetüüp
String
on Javas muutumatu andmetüüp. String
-i muutmiseks on vaja luua uus String
.
String word = pepperoni;
word.replace('r', 'n');
System.out.println(word); // pepperoni
Vaja on
String word = "pepperoni";
String newWord = word.replace('r', 'n');
System.out.println(newWord); // peppenoni
StringBuilder
on muudetav andmetüüp, mis tagastab StringBuilder
-i niikaua kuni teda pole teisendatud String
-iks või CharSequence
-iks (näiteks toString
, substring
või chars
meetodite kaudu).
StringBuilder builder = new StringBuilder("pepperoni");
builder.replace(6, 7, "d");
System.out.println(builder);; // peppenoni
Mälukasutus
StringBuilder
-it eelistatakse vähemate objektiloomiste tõttu String
-i klassile ka failitöötluses, JSON
-i kirjutamisel ning muudes operatsioonides, kus pole vajadust vaheobjekte kasutada. Mälukasutust saab StringBuilder
-is suurendada ka setLength(0)
meetodiga, mis StringBuilder
-i tühjendab ja taaskasutavaks teeb.
Method Chaining
method chaining
on mitme meetodi järjestikune kasutamine ühel real:
StringBuilder sb = new StringBuilder();
String[] exceptions = {"NullPointer", "IO", "FileNotFound", "StackOverflow"};
for (String e : exceptions) {
sb.append("You have: ").append(e).append("Exception").append(" again").append("\n");
}
System.out.println(sb);
Väljund:
You have: NullPointerException again
You have: IOException again
You have: FileNotFoundException again
You have: StackOverflowException again
StringBuilderi loomine
Tühi
StringBuilder
StringBuilder sb = new StringBuilder();
Määratud algmahuga
StringBuilder
StringBuilder sb = new StringBuilder(32);
Unicode karakteritega alaväärtustatud
StringBuilder
CharSequence str= "Espresso";
StringBuilder sb = new StringBuilder(str);
String
-iga algväärtustatudStringBuilder
String str= "Cappuccino";
StringBuilder sb = new StringBuilder(str);
või otse
StringBuilder sb = new StringBuilder(Cappuccino);
StringBuilderisse sõnede lisamine
append() – sõnede lisamine StringBuilderi lõppu
StringBuilder builder = new StringBuilder();
LongStream.rangeClosed(0, 5).forEach(e -> {
builder.append(e);
if (e % 2 == 0) {
builder.append("peppe");
}
if (e < 5) {
builder.append("ro");
} else {
builder.append("ni");
}
});
System.out.println(builder); // 0peppero1ro2peppero3ro4peppero5ni
insert() – sõnede lisamine määratud asukohta
StringBuilder builder = new StringBuilder("Alexander and Day.");
builder.insert(14, "the Terrible, Horrible, No Good, Very Bad ");
System.out.println(builder);
Väljund
Alexander and the Terrible, Horrible, No Good, Very BadDay.
StringBuilder vs StringBuffer
StringBuffer
on sünkroniseeritud (thread-safe
) StringBuilder, mistõttu on StringBuffer` ka aeglasem, kuid``multithreading``-uga programmis tagab StringBuffer`, et mitu thread
-i ei muudaks sama String
-i korraga.
