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
String
o wartości “Hello”. - Próba zmiany Stringa – dodajemy do
greeting
frazę “, 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ż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.