Co oznacza ‘Immutable’ w kontekście klasy String w Javie?

W programowaniu w języku Java, słowo “immutable” odnosi się do niemutowalności obiektu, co oznacza, że raz utworzony, jego stan nie może być zmieniony. Kluczowym przykładem niemutowalności jest klasa String. W tej lekcji przyjrzymy się, co dokładnie oznacza, że String jest niemutowalny i jakie są tego konsekwencje dla tworzenia i manipulacji łańcuchami znaków w Java.

Przykład kodu w Java

Aby zrozumieć niemutowalność, rozważmy poniższy przykład kodu, który ilustruje, jak obiekty typu String są traktowane w Javie.

// Przykład pokazujący niemutowalność Stringów
public class StringImmutableExample {
    public static void main(String[] args) {
        // Inicjalizacja Stringa
        String greeting = "Hello";
        System.out.println("Początkowe powitanie: " + greeting);

        // Próba zmiany Stringa przez dodanie
        greeting = greeting + ", World!";
        System.out.println("Zmodyfikowane powitanie: " + greeting);

        // Referencja do oryginalnego Stringa
        String anotherGreeting = "Hello";
        System.out.println("Inne powitanie: " + anotherGreeting);

        // Sprawdzamy, czy obie referencje wskazują na to samo
        System.out.println("Czy te same obiekty? " +
            (greeting == anotherGreeting)); // false
    }
}

Komentarze w kodzie wyjaśniają kluczowe momenty:

  1. Inicjalizacja Stringa – tworzymy String o wartości “Hello”.
  2. Próba zmiany Stringa – dodajemy do greeting frazę “, World!”. Ważne jest, że nie zmieniamy oryginalnego obiektu String, ale tworzymy nowy obiekt String, który teraz jest przypisany do zmiennej greeting.
  3. Referencja do oryginalnego Stringa – tworzymy nową zmienną anotherGreeting, która również odnosi się do tekstu “Hello”.
  4. Sprawdzanie równości obiektów – używając operatora ==, sprawdzamy, czy obie zmienne wskazują na ten sam obiekt w pamięci. Wynik jest false, ponieważ greeting zostało zmodyfikowane i wskazuje teraz na nowy obiekt.

Podsumowanie

Niemutowalność String w Javie sprawia, że każda operacja modyfikująca łańcuch znaków, tak jak dodanie nowego tekstu, skutkuje utworzeniem nowego obiektu String, zamiast zmiany istniejącego. Ta cecha zapewnia bezpieczeństwo w wielowątkowych aplikacjach i pozwala na uniknięcie niezamierzonych zmian, które mogłyby prowadzić do błędów i nieprzewidywalnego zachowania programu. To sprawia, że String jest nie tylko podstawowym, ale i niezmiernie ważnym typem w ekosystemie Java.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top