Sobes.tech
Junior

Opowiedz o klasie String w języku programowania, który znasz.

sobes.tech AI

Odpowiedź od AI

W kontekście Java, String jest niezmienną klasą reprezentującą sekwencję znaków. Obiekty String tworzone są na przykład za pomocą literałów lub operatora new.

Cechy:

  • Niezmienność: Po utworzeniu obiektu String, jego zawartość nie może być zmieniona. Operacje, które wydają się modyfikować łańcuch (np. konkatenacja), w rzeczywistości tworzą nowy łańcuch. Zapewnia to bezpieczeństwo podczas pracy z wątkami i tablicami mieszającymi.
  • Pula łańcuchów: Dla literałów łańcuchów, JVM Java używa specjalnego obszaru pamięci zwanego pulą łańcuchów. Jeśli łańcuch o takiej samej zawartości już istnieje w puli, JVM używa odwołania do istniejącego obiektu zamiast tworzyć nowy. Optymalizuje to wykorzystanie pamięci.
  • Przeciążenie operatora +: Operator + dla łańcuchów służy do konkatenacji.
  • Wiele przydatnych metod: Klasa String zapewnia szeroki zakres metod do pracy z łańcuchami: pobieranie długości (.length()), porównywanie (.equals(), .equalsIgnoreCase()), wyszukiwanie podłańcuchów (.contains(), .indexOf()), wyodrębnianie podłańcuchów (.substring()), zamiana znaków (.replace()), konwersja na wielkie/male litery (.toUpperCase(), .toLowerCase()), usuwanie spacji (.trim()) i inne.

Przykłady:

Tworzenie łańcuchów:

// Tworzenie za pomocą literału - umieszczony w puli łańcuchów
String s1 = "Hello";

// Tworzenie za pomocą new - tworzy nowy obiekt poza pulą
String s2 = new String("World");

// Konkatenacja łańcuchów
String s3 = s1 + " " + s2;

Przykład niezmienności:

String oryginalny = "abc";
String zmodyfikowany = oryginalny.concat("def"); // Tworzy nowy łańcuch

// oryginalny nadal jest "abc"
System.out.println(oryginalny); // Wypisze: abc
// zmodyfikowany - nowy łańcuch "abcdef"
System.out.println(zmodyfikowany); // Wypisze: abcdef

Ważne metody:

String tekst = "  Example String  ";

// Długość łańcucha
int długość = tekst.length(); // 18

// Porównanie łańcuchów
boolean czyRówne = tekst.equals("  Example String  "); // true

// Porównanie bez uwzględniania wielkości liter
boolean czyRówneIgnoreCase = tekst.equalsIgnoreCase("  example string  "); // true

// Wyszukiwanie podłańcucha
boolean zawiera = tekst.contains("String"); // true
int indeks = tekst.indexOf("String"); // 10

// Wyodrębnianie podłańcucha
String podłańcuch = tekst.substring(10, 16); // String

// Zamiana znaków
String zamieniony = tekst.replace(" ", "-"); // --Example-String--

// Usuwanie spacji z początku i końca
String wyczyszczony = tekst.trim(); // Example String

String jest szeroko używany w Javie do reprezentowania informacji tekstowych i jest podstawową klasą do przetwarzania łańcuchów.