Sobes.tech
Junior

Pastāstiet man par String klasi Java programmēšanas valodā.

sobes.tech AI

Atbilde no AI

Java valodā String klase pārstāv nemaināmu rakstzīmju secību.

Galvenās īpašības un iezīmes:

  • Nemaināmība (Immutability): Pēc String objekta izveides tā saturs nevar tikt mainīts. Jebkura darbība, kas izskatās kā mainīšana (piemēram, saistīšana), patiesībā izveido jaunu String objektu. Tas palielina drošību un drošību daudzšūnu vidē.
  • Operatora + pārslodze: Rakstzīmju virkņu gadījumā operators + ir pārslodzes, lai veiktu saistīšanu.
  • Divi veidi, kā izveidot:
    • Ar rakstzīmju virknes literāļiem: String s1 = "Hello"; – tas tiek izveidots rakstzīmju baseinā.
    • Ar new operatoru: String s2 = new String("World"); – tas tiek izveidots uz heap, un var tikt izveidots jauns objekts pat ja tāds pats literāls jau ir baseinā.
  • Rakstzīmju virkņu baseins (String Pool): Heap daļa, kurā tiek glabāti rakstzīmju virkņu literāli, lai optimizētu atmiņu. Izveidojot rakstzīmju virkni, JVM vispirms pārbauda baseinu. Ja tāda jau pastāv, tas atgriež atsauci uz esošo objektu. Ja nē, tas izveido jaunu un pievieno to baseinam.
  • Galvenās noderīgās metodes:
    • length(): Atgriež virknes garumu.
    • charAt(int index): Atgriež rakstzīmi norādītajā indeksā.
    • substring(int beginIndex, int endIndex): Atgriež apakšvirkni.
    • contains(CharSequence s): Pārbauda, vai virkne satur norādīto rakstzīmju secību.
    • indexOf(int ch) / indexOf(String str): Atgriež pirmās parādīšanās indeksu.
    • equals(Object anObject): Salīdzina saturu. Svarīgi izmantot equals() saturu salīdzināšanai, nevis ==, kas salīdzina atsauces.
    • equalsIgnoreCase(String anotherString): Salīdzina bez lielajiem un mazajiem burtiem.
    • replace(char oldChar, char newChar) / replace(CharSequence target, CharSequence replacement): Aizstāj rakstzīmes vai apakšvirknes.
    • trim(): Noņem tukšumus sākumā un beigās.
    • split(String regex): Sadalās virknē pēc norādītā atdalītāja.

Piemēri izveidei un dažām operācijām:

// Ar literāļiem
String str1 = "Java";

// Ar `new`
String str2 = new String("Java");

// Savienošana
String str3 = str1 + " is amazing";

// Satura salīdzināšana (izmantojam `equals`, ne `==`)
boolean areEqualContent = str1.equals(str2); // true

// Atsauču salīdzināšana (izmantojam `==`)
boolean areEqualReference = (str1 == str2); // false

// Virknes garums
int length = str3.length();

// Rakstzīmes iegūšana
char firstChar = str1.charAt(0); // 'J'

// Satura pārbaude
boolean containsIs = str3.contains("is"); // true

Nemaināmība String var radīt efektivitātes problēmas, ja bieži tiek veiktas virknes modifikācijas, jo katru reizi tiek izveidots jauns objekts. Šādos gadījumos ir ieteicams izmantot StringBuilder vai StringBuffer.