String jest niemutowalny, aby można go było bezpiecznie współdzielić między wątkami, buforować i internować w puli Stringów oraz używać jako klucz w kolekcjach hashujących (stały hashCode). Zwiększa to też bezpieczeństwo, bo np. nazwy klas czy ścieżki nie mogą zostać zmienione po utworzeniu.
Rozwinięcie krótkiej odpowiedzi — co zwykle ma znaczenie w praktyce:
Krótki przykład (szablon do wyjaśniania):
// Example: discuss trade-offs for "dlaczego-string-jest-niemodyfikowalny-w-javie?"
function explain() {
// Start from the core idea:
// Dla bezpieczeństwa, synchronizacji (bezpieczeństwo wątkowe) i optymalizacji poprzez String
}