– Szia Amigo!

– De Bilaabo, már köszöntél.

"Tényleg? Nos, még mindig szeretek minden leckét ezzel a kifejezéssel kezdeni."

– Ma mélyrehatóan tanuljuk a Vonós osztályt.

"De én már mindent tudok róla. Még azt is tudom, hogy a String osztály megváltoztathatatlan."

"A String osztálynak 46 metódusa van. Hányat ismer ezek közül?"

"Nem több tíznél. Valójában körülbelül 5 maximum."

– Akkor figyelj.

"A Java készítői észrevették, hogy a programokban a legtöbb karakterláncot nem módosítani kell, de néha mégis módosulnak. Nagyon bosszantó, ha létrehozol egy Stringet, elmented benne valami fontosat, átadod valaki más metódusának, és megváltozik. . Hogy ez ne forduljon elő, úgy döntöttek, hogy mind változtatható, mind megváltoztathatatlan húrokat hoznak létre."

"A String osztály a megváltoztathatatlan karakterláncokhoz, a StringBuilder osztály pedig a változtatható karakterláncokhoz való. Ezen osztályok objektumai könnyen konvertálhatók másik típusba. A Java fejlesztőknek a legtöbb esetben egyszerűen csak Stringre van szükségük, ami azt bizonyítja, hogy a Java alkotóinak igazuk volt."

"Tehát ha szükségem van egy Stringre, akkor a String osztályt használom. És ha módosítható Stringre van szükségem, akkor a StringBuilder osztályt használom ?"

"Igen. Valójában van egy másik osztály, a StringBuffer. Ez a StringBuilder másolata, kivéve, hogy minden metódusa szinkronizáltként van deklarálva , így az objektum a program különböző szálaiból elérhető."

"És mi van ezzel a példával? Itt nem változtatják meg a húrt?"

String s = "cat";
s = s + "-" + s;

"Nem. Két String objektum van itt: "cat" és "cat-cat". A második az elsővel jön létre, de az első objektum nem változik. A valóságban a dolgok sokkal érdekesebbek itt. Íme a kód a fordító a példád fordításakor generálja:"

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

"Tehát a StringBuildert szinte mindig használják új karakterláncok létrehozására, de néha a fordító egyszerűen elvégzi az összes munkát helyetted. De a te verziód egyszerűbb, nem gondolod?"

"Igen, fantasztikus, hogy a Java-nak ilyen fejlett fordítója van."

"Nos, most menjünk végig a String osztály metódusain:"

1) Hogyan találhatom meg a húr hosszát?

"A hossz metódus egy karakterlánc hosszát adja vissza (a benne lévő karakterek számát)."

Mód) Példák
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Hogyan kaphatok karaktert egy karakterláncból?

"A charAt metódus egy karaktert ad vissza egy karakterláncból az indexe alapján. A karakterindexek 0-tól kezdődnek.

Mód) Példák
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Hogyan szerezhetek karaktereket egy karakterláncból?

Hogyan szerezhetek karaktereket egy karakterláncból?

Mód) Példák
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Hogyan hasonlítsam össze a karakterláncokat?

"Az equals metódus ellenőrzi, hogy a karakterláncok egyeznek-e, az equalsIgnoreCase metódus pedig ellenőrzi, hogy a karakterláncok egyeznek-e, ha figyelmen kívül hagyja a kis- és nagybetűket.

Mód) Mód)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) Hogyan tudom a String összes betűjét kis- vagy nagybetűvé tenni?

"A toUpperCase metódus visszaadja a String másolatát, minden nagybetűvel."

"A toLowerCase metódus visszaadja a String másolatát, csupa kisbetűvel."

Mód) Példák
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Eredmény:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Eredmény:

s == "good news, everyone!";

6) Hogyan távolíthatom el a szóközöket egy karakterlánc elejéről és végén?

"A trim metódus egy karakterlánc másolatát adja vissza, szóköz karakterek nélkül az elején és a végén."

Mód) Példák
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Eredmény:

s == "Good news, everyone!";