Hey, ich hätte da mal eine kurze Frage zu Strings:
In unterschiedlichen Kursen habe ich gelernt, dass es sich bei Strings nicht um primitive Datentypen sondern um Referenz-Datentypen handelt, die nicht unmittelbar den Wert speichern, sondern lediglich eine Angabe darüber enthalten, wo sich der Wert im Speicher befindet.
Mir ist nun im Vergleich mit primitiven Datentypen und anderen Referenz-Datentypen aufgefallen, dass Strings sich mal eher wie die einen und dann doch wieder wie die anderen verhalten.
Beispiele dafür:
Erstelle ich eine Array-Variable, habe ich einen "klassischen" Referenz-Typen. Wenn meinen Array-Wert in eine Methode einsetze und die Methode auf ihn zugreift, wird für die Methoden-Variable der Wert des Arrays kopiert - in diesem Fall nur die Referenz, die in der Variable gespeichert ist. Manipuliere ich nun mit der Methode meine Methoden-Variable, ändert das auch die Werte der Ursprungsvariable, da beide Variablen auf dasselbe Array zugreifen. Bei primitiven Datentypen befindet sich hingegen der Wert direkt "in" der Variable und meine Methode kann die Ursprungsvariable nicht manipulieren, da es sich ja nur um eine Kopie dieses Wertes handelt.
Nun haben wir die String-Variable, die sich aber genau wie ein primitiver Datentyp verhält und sich nicht verändert, obwohl es ein Referenz-Typ ist?
Nun eine andere Situation: Ich will ein Conditional Statement aufbauen. Primitive Datentypen kann ich dann einfach in meinem Statement durch Vergleichsoperationen wie >, ==, ... miteinander vergleichen. Will ich nun aber einen String verwenden, brauche ich die .equals() Funktion, damit dies funktioniert und die String-Variable verhält sich nicht mehr wie ein primitiver Datentyp.
Kann mir hier jemand erklären, was es mit Strings auf sich hat und wo die nun einzuordnen sind?
In unterschiedlichen Kursen habe ich gelernt, dass es sich bei Strings nicht um primitive Datentypen sondern um Referenz-Datentypen handelt, die nicht unmittelbar den Wert speichern, sondern lediglich eine Angabe darüber enthalten, wo sich der Wert im Speicher befindet.
Mir ist nun im Vergleich mit primitiven Datentypen und anderen Referenz-Datentypen aufgefallen, dass Strings sich mal eher wie die einen und dann doch wieder wie die anderen verhalten.
Beispiele dafür:
Erstelle ich eine Array-Variable, habe ich einen "klassischen" Referenz-Typen. Wenn meinen Array-Wert in eine Methode einsetze und die Methode auf ihn zugreift, wird für die Methoden-Variable der Wert des Arrays kopiert - in diesem Fall nur die Referenz, die in der Variable gespeichert ist. Manipuliere ich nun mit der Methode meine Methoden-Variable, ändert das auch die Werte der Ursprungsvariable, da beide Variablen auf dasselbe Array zugreifen. Bei primitiven Datentypen befindet sich hingegen der Wert direkt "in" der Variable und meine Methode kann die Ursprungsvariable nicht manipulieren, da es sich ja nur um eine Kopie dieses Wertes handelt.
Nun haben wir die String-Variable, die sich aber genau wie ein primitiver Datentyp verhält und sich nicht verändert, obwohl es ein Referenz-Typ ist?
Nun eine andere Situation: Ich will ein Conditional Statement aufbauen. Primitive Datentypen kann ich dann einfach in meinem Statement durch Vergleichsoperationen wie >, ==, ... miteinander vergleichen. Will ich nun aber einen String verwenden, brauche ich die .equals() Funktion, damit dies funktioniert und die String-Variable verhält sich nicht mehr wie ein primitiver Datentyp.
Kann mir hier jemand erklären, was es mit Strings auf sich hat und wo die nun einzuordnen sind?