Normal
Erst einmal haben unveränderliche Objekte eine Reihe konzeptioneller Vorteile (z.B. automatisch threadsafe, cache-tauglich, equals, hashcode und compare liefern immer dieselben Ergebnisse usw.). In diesem Sinne sind Arrays allerdings veränderlich. Dass die Arraygröße nicht geändert werden kann, hängt wahrscheinlich mit Performance-Überlegungen zusammen: Array-Bereichsprüfungen sind "teuer", und man kann sie oft einsparen, wenn die Array-Größe fix ist.Aus praktischer Sicht bedeuten beide von dir genannten Punkte keine echte Einschränkung: Braucht man einen "veränderlichen Sting", kann man einen StringBuilder (oder StringBuffer bei mehreren Threads) nehmen. Arrays können duch ArrayLists ersetzt werden, die zudem typsicher sind (Arrays sind das größe Loch in Javas Typsystem). Array-Längen lassen sich auch recht effizient mit den Methoden in java.util.Arrays bzw. mit System.arrayCopy anpassen.
Erst einmal haben unveränderliche Objekte eine Reihe konzeptioneller Vorteile (z.B. automatisch threadsafe, cache-tauglich, equals, hashcode und compare liefern immer dieselben Ergebnisse usw.). In diesem Sinne sind Arrays allerdings veränderlich. Dass die Arraygröße nicht geändert werden kann, hängt wahrscheinlich mit Performance-Überlegungen zusammen: Array-Bereichsprüfungen sind "teuer", und man kann sie oft einsparen, wenn die Array-Größe fix ist.
Aus praktischer Sicht bedeuten beide von dir genannten Punkte keine echte Einschränkung: Braucht man einen "veränderlichen Sting", kann man einen StringBuilder (oder StringBuffer bei mehreren Threads) nehmen. Arrays können duch ArrayLists ersetzt werden, die zudem typsicher sind (Arrays sind das größe Loch in Javas Typsystem). Array-Längen lassen sich auch recht effizient mit den Methoden in java.util.Arrays bzw. mit System.arrayCopy anpassen.