Junior
Mesélj a Java programozási nyelv String osztályáról.
sobes.tech MI
Válasz az MI-től
A String osztály Java-ban egy változatlan karakterlánc-sorozatot képvisel.
Fő jellemzők és sajátosságok:
- Változatlanság (Immutability): Miután létrehoztunk egy
Stringobjektumot, annak tartalma nem módosítható. Bármilyen művelet, amely úgy tűnik, mintha módosítaná a szöveget (például összefűzés), valójában egy újStringobjektumot hoz létre. Ez növeli a biztonságot és a szálbiztonságot. - Az
+operátor túlterhelése: Sztringek esetén az+operátor túlterhelt az összefűzés végrehajtására. - Két létrehozási mód:
- Szöveg literál segítségével:
String s1 = "Hello";- ez a sztring a String Pool-ban jön létre. - Az
newoperátor használatával:String s2 = new String("World");- ez a heap-en jön létre, és akár ugyanaz a literál is lehet, de külön objektum lesz.
- Szöveg literál segítségével:
- String Pool: A heap egy része, ahol a szöveg literálokat tárolják a memóriahatékonyság érdekében. Szöveg literál létrehozásakor a JVM először ellenőrzi a pool-t. Ha a szöveg már létezik, akkor a meglévő objektumra mutató hivatkozást ad vissza. Ha nem, akkor létrehoz egy újat és hozzáadja a pool-hoz.
- Fő hasznos metódusok:
length(): A szöveg hosszát adja vissza.charAt(int index): A megadott indexű karaktert adja vissza.substring(int beginIndex, int endIndex): Részsztringet ad vissza.contains(CharSequence s): Ellenőrzi, hogy tartalmazza-e a szöveg a megadott karakterláncot.indexOf(int ch)/indexOf(String str): Az első előfordulás indexét adja vissza.equals(Object anObject): A tartalmat hasonlítja össze. Fontos, hogyequals()-t használjunk a tartalom összehasonlítására, nem pedig==-t, ami az objektumokra mutató hivatkozásokat hasonlítja.equalsIgnoreCase(String anotherString): Különböző kis- és nagybetűk esetén is egyezést vizsgál.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Karaktereket vagy szövegrészeket cserél.trim(): A szöveg elején és végén lévő szóközöket távolítja el.split(String regex): Szöveget feloszt a megadott elválasztó szerint.
Példák létrehozásra és néhány műveletre:
// Literál segítségével
String str1 = "Java";
// `new` használatával
String str2 = new String("Java");
// Összefűzés
String str3 = str1 + " is amazing";
// Tartalom összehasonlítása (az `equals`-t használjuk, nem a `==`)
boolean areEqualContent = str1.equals(str2); // true
// Hivatkozások összehasonlítása (az `==`-t használjuk)
boolean areEqualReference = (str1 == str2); // false
// Szöveg hossza
int length = str3.length();
// Karakter lekérése
char firstChar = str1.charAt(0); // 'J'
// Tartalmaz-e
boolean containsIs = str3.contains("is"); // true
A String változatlansága hatékonysági problémákat okozhat, ha sokszor módosítjuk a szöveget, mivel minden alkalommal új objektum jön létre. Ilyen esetekben célszerűbb a StringBuilder vagy a StringBuffer használata.