Junior
Papaskinkite apie String klasę Java programavimo kalboje.
sobes.tech AI
Atsakymas iš AI
„String“ klasė Java kalboje reprezentuoja nekintamą simbolių seką.
Pagrindinės savybės ir ypatybės:
- Nekintamumas (Immutability): Po to, kai sukuriamas
Stringobjektas, jo turinys negali būti pakeistas. Bet kokia operacija, kuri atrodo kaip modifikacija (pavyzdžiui, sujungimas), iš tikrųjų sukuria naująStringobjektą. Tai didina saugumą ir saugumą keliuose siūluose. - Operatoriaus
+perkrovimas: Eilutėms operatorius+yra perkrautas sujungimui. - Dvi kūrimo būdai:
- Naudojant eilutės literalius:
String s1 = "Hello";– sukuriama eilutės baseine. - Naudojant
newoperatorių:String s2 = new String("World");– sukuriama heap'e, gali būti sukurtas naujas objektas net jei toks pats literalas jau yra baseine.
- Naudojant eilutės literalius:
- Eilutės baseinas (String Pool): Heap'o dalis, kurioje saugomos literalių eilutės, siekiant optimizuoti atmintį. Sukūrus eilutę, JVM pirmiausia patikrina baseiną. Jei tokia eilutė jau egzistuoja, grąžina nuorodą į esamą objektą. Jei ne, sukuria naują ir įdeda į baseiną.
- Pagrindiniai naudingi metodai:
length(): Grąžina eilutės ilgį.charAt(int index): Grąžina simbolį nurodytu indeksu.substring(int beginIndex, int endIndex): Grąžina dalį eilutės.contains(CharSequence s): Patikrina, ar eilutė turi nurodytą simbolių seką.indexOf(int ch)/indexOf(String str): Grąžina pirmojo pasikartojimo indeksą.equals(Object anObject): Lygina turinį. Svarbu naudotiequals()turinio palyginimui, o ne==, kuris lygina nuorodas.equalsIgnoreCase(String anotherString): Lygina be didžiųjų ir mažųjų raidžių.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Pakeičia simbolius ar dalis.trim(): Pašalina tarpus pradžioje ir pabaigoje.split(String regex): Suskaido eilutę į dalis pagal skiriamąjį ženklą.
Pavyzdžiai sukūrimo ir kai kurių operacijų:
// Naudojant literalius
String str1 = "Java";
// Naudojant `new`
String str2 = new String("Java");
// Sujungimas
String str3 = str1 + " is amazing";
// Turinys lyginimas (naudojame `equals`, o ne `==`)
boolean areEqualContent = str1.equals(str2); // true
// Nuorodų lyginimas (naudojame `==`)
boolean areEqualReference = (str1 == str2); // false
// Eilutės ilgis
int length = str3.length();
// Simbolio gavimas
char firstChar = str1.charAt(0); // 'J'
// Turinys patikrinimas
boolean containsIs = str3.contains("is"); // true
Nekintamumas String gali sukelti efektyvumo problemų, jei dažnai keičiamas eilutės turinys, nes kiekvieną kartą sukuriamas naujas objektas. Tokiu atveju geriau naudoti StringBuilder arba StringBuffer.