Grundlagenfrage zu Strings

Ich google schon studenlang aber finde keine Antowrt auf folgende Frage:
Warum muss für das Einlesen und Ausgeben von Zeichenketten ein Objekt erzeugt werden?

Hat das was mit der Unveränderlichkeit von Strings zu tun?

Wäre sehr dankbar für eine kurze und verständliche Antwort! :smile:

Ich google schon studenlang aber finde keine Antowrt auf
folgende Frage:

Warum muss für das Einlesen und Ausgeben von Zeichenketten
ein Objekt erzeugt werden?

Also ich würde pauschal mal sagen, weil Java ne Objektorientierte Sprache ist :wink:

Hat das was mit der Unveränderlichkeit von Strings zu tun?

Würd ich so unterschreiben. String ist ja in Java eine eigene „sub-Klasse“ von Object wenn ich das grad richtig in Erinnerung hab, also muss jeder String ein eigenes Object sein.

Wäre sehr dankbar für eine kurze und verständliche Antwort!

-)

Hoffe das reicht dir. Falls nicht, gerne nochmal nachfragen.

gruß
Andy

musst Du nicht
nimm ein char[] und so geht es

Wenn Du Strings meinst:
Strings sind Objekte, weswegen man einige Methoden darauf anwenden kann.
Und Objekte müssen nunmal erzeugt werden.
Um Speicher zu allozieren und so weiter.
Das ist Sinn und Zweck von OO Sprachen.
Lern mal Smalltalk und mach dann Java.

nimm ein char[] und so geht es

Wenn du ein char[] verwendest, musst du jedes Zeichen einzeln zuweißen und musst im Vornhinein wissen, wie viele Zeichen du willst. Zudem wirst du bei System.out.print() nicht das gewünschte Ergebnis bekommen. Ich vermute mal, du verwechselst da etwas mit C/C++?

Warum muss für das Einlesen und Ausgeben von Zeichenketten ein Objekt erzeugt werden?

In Java gibt es nur die primitive Datentypen char, short, int, long, float, double, byte, boolean und void. Alles andere kann nur mithilfe eines Objektes dargestellt werden. Für die Darstellung einer Zeichenkette wird deshalb die Klasse String bereitgestellt.

Hat das was mit der Unveränderlichkeit von Strings zu tun?

Nein. Die unveränderlichkeit von Strings hat damit zu tun, dass die modifikation eines Strings sehr aufwändig ist (Strings werden intern als char-Array dargestellt). Deshalb wird beim zuweißen eines neuen Wertes auch ein neues String-Objekt erzeugt.
Die JVM verwaltet intern einen Stringpool, welcher alle bislang erzeugte String-Objekte beinhaltet. Wenn der (inhaltlich) selbe String mehrmals in einem Programm verwendet wird, wird kein neuer String erzeugt, sonder die Referenz auf den im String-Pool vorhandenen verwendet.