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:
- Inicjalizacja Stringa – tworzymy Stringo wartości “Hello”.
- Próba zmiany Stringa – dodajemy do greetingfrazę “, World!”. Ważne jest, że nie zmieniamy oryginalnego obiektuString, ale tworzymy nowy obiektString, który teraz jest przypisany do zmiennejgreeting.
- Referencja do oryginalnego Stringa – tworzymy nową zmienną anotherGreeting, która również odnosi się do tekstu “Hello”.
- Sprawdzanie równości obiektów – używając operatora ==, sprawdzamy, czy obie zmienne wskazują na ten sam obiekt w pamięci. Wynik jestfalse, ponieważgreetingzostał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.

