Junior
Rääkige mulle Java programmeerimiskeeles String klassist.
sobes.tech AI
Vastus AI-lt
Java keeles String klass esindab muutumatut märgisekette.
Peamised omadused ja iseloomustused:
- Muutumatuse (Immutability): Pärast
Stringobjekti loomist ei saa selle sisu muuta. Iga operatsioon, mis näib muutvat stringi (näiteks ühendamine), loob tegelikult uueStringobjekti. See suurendab turvalisust ja niiditõrjet. +operaatori ülekoormus: Stringide puhul on+operaator ülekoormatud ühendamiseks.- Kaks loomise viisi:
- Stringi literaalidega:
String s1 = "Hello";– see luuakse stringi basseinile. newoperaatori kasutamine:String s2 = new String("World");– see luuakse virnas (Heap), ja võib olla loodud uus objekt isegi kui sama literaal on juba basseinil.
- Stringi literaalidega:
- Stringi bassein (String Pool): Alale virnas, kus hoitakse stringi literaale mälu optimeerimiseks. Stringi loomisel kontrollib JVM esmalt basseinil. Kui selline string juba eksisteerib, tagastab ta viite olemasolevale objektile. Kui ei, siis loob uue ja lisab basseinile.
- Peamised kasulikud meetodid:
length(): Tagastab stringi pikkuse.charAt(int index): Tagastab märgi antud indeksil.substring(int beginIndex, int endIndex): Tagastab alamstringi.contains(CharSequence s): Kontrollib, kas string sisaldab antud märgijada.indexOf(int ch)/indexOf(String str): Tagastab esimese esinemise indeksi.equals(Object anObject): Võrdleb sisu. Oluline on kasutadaequals()sisu võrdlemiseks, mitte==, mis võrdleb viiteid.equalsIgnoreCase(String anotherString): Võrdleb stringe, ignoreerides suur- ja väiketähti.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Asendab märke või alamstringe.trim(): Eemaldab tühikud algusest ja lõpust.split(String regex): Jagab stringi alamstringideks eraldaja järgi.
Näited loomise ja mõne operatsiooni kohta:
// Literali kasutamine
String str1 = "Java";
// `new` kasutamine
String str2 = new String("Java");
// Ühendamine
String str3 = str1 + " is amazing";
// Sisu võrdlemine (kasutame `equals`, mitte `==`)
boolean areEqualContent = str1.equals(str2); // true
// Viidete võrdlemine (kasutame `==`)
boolean areEqualReference = (str1 == str2); // false
// Stringi pikkus
int length = str3.length();
// Märgi saamine
char firstChar = str1.charAt(0); // 'J'
// Sisuga kontroll
boolean containsIs = str3.contains("is"); // true
Muutumatuse tõttu String võib põhjustada tõrkeid, kui stringi sageli muudetakse, kuna iga kord luuakse uus objekt. Sellistel juhtudel on parem kasutada StringBuilder või StringBuffer.