Klassen Objekt der Klasse String

proteus

Mitglied
Hallo Zusammen,

Ich bin neu in diesem Forum und möchte erstmal alle recht herzlich begrüssen und mich im Voraus für die Mühe bedanken, die ihr euch macht.

Ich bin gerade dabei mich in die Programmiersprache Java einzuarbeiten. Dabei erstelle ich eine Zusammenfassung des gelernten, denn was ich in eigenen Worten ausdrücken kann, habe ich auch verstanden :)

So, nun zu meiner Frage:

In folgendem Beispiel wird ein neues Objekt str definiert.


Java:
class Demo
{
  public static void main ( String[] args )
  {
    String str ;

    str = new String( "Ein Stringobjekt erzeugen" );
  }
}


Was genau bewirkt in Zeile 7 "new String" ? Ist die Variable str nicht schon automatisch der Klasse java.lang.String zugewiesen, da dies schon in Zeile 5 definiert wurde?

Wenn Zeile 7 zu

Code:
str = "Ein Stringobjekt erzeugen" ;

geändert wird, bekomme ich genau dieselbe Ausgabe.

Hoffe, dass mir das jemand erklären kann.

Schöne Grüsse
 

hdi

Top Contributor
Hallo Zusammen,

Ich bin neu in diesem Forum und möchte erstmal alle recht herzlich begrüssen und mich im Voraus für die Mühe bedanken, die ihr euch macht.
Wow, das ist ja mal ein schöner erster Post. Herzlich Willkommen! :)

Was genau bewirkt in Zeile 7 "new String" ? Ist die Variable str nicht schon automatisch der Klasse java.lang.String zugewiesen, da dies schon in Zeile 5 definiert wurde?
Du musst unterscheiden zwischen Objekt und Variable. "str" ist eine Variable. Und zwar eine lokale Variable, d.h. sie hat bei ihrer Deklaration noch keinen Wert. Das "String" bei der Deklaration sagt nur aus, dass du Strings darin abspeichern kannst (und nicht z.B. Zahlen oder sonst etwas).
new String() ist ein Konstruktor-Aufruf, der ein String-Objekt erzeugt. Dieses Objekt speicherst du in der Variable ab*

*Stimmt so nicht wirklich. Du speicherst eigentlich nur eine Referenz, aber das würde an dieser Stelle zu weit gehen.

Wenn Zeile 7 zu
Code:
str = "Ein Stringobjekt erzeugen" ;
geändert wird, bekomme ich genau dieselbe Ausgabe.

Das ist eine Eigenart von Strings: Du kannst sie ohne Konstruktor erzeugen. Auch hier gibt es einen kleinen aber feinen Unterschied (Stichwort: String Constant Pool), der für den Anfang für dich erstmal nicht so wichtig ist.

edit: Natürlich kann ich dir das alles noch genauer erklären, falls gewünscht. Aber für's erste würde es imho reichen wenn du den Unterschied zwischen einer Variablen-Deklaration und der Erzeugung eines Objekts und Zuweisung zu der Variablen verstehst.
 

proteus

Mitglied
Wow, vielen Dank für die vielen Antworten.....

Du musst unterscheiden zwischen Objekt und Variable. "str" ist eine Variable. Und zwar eine lokale Variable, d.h. sie hat bei ihrer Deklaration noch keinen Wert. Das "String" bei der Deklaration sagt nur aus, dass du Strings darin abspeichern kannst (und nicht z.B. Zahlen oder sonst etwas).

Ok, um nochmals sicher zu stellen, dass ich das jetzt richtig verstehe.

Code:
String str;
sagt nur, dass die Variable "str" eine Zeichnkette sein darf, soweit noch klar

Code:
str = "Ein Stringobjekt erzeugen" ;
weist der Variable "str" den Wert "Ein Stringobjekt erzeugen" zu. Soweit immer noch klar.

Code:
str = new String( "Ein Stringobjekt erzeugen" ) ;
In diesem Beispiel wird erst wirklich ein Objekt erzeugt, welches der Variable "str" zugewiesen wird. Respektive wird eine Referenz zur Klasse java.lang.String hergestellt.

Der Unterschied wäre dann, dass mit "new String" ein Objekt erzeugt wird, welches Daten und Mehoden enthalten kann. Mit "String str;" jedoch nur definiert wird, dass es sich um eine Zeichenkette handelt. Ist das richtig so?

Das ganze würde dann bedeuten, dass dieses Beispiel nicht gerade gut ist um die Erzeugung eines Objektes darzustellen, da "String" sowieso ein Spezialfall ist und ohne Konstruktor erzeugt werden kann.

new String() findest du kaum in ernsthaften Lehrbüchern, oder doch?
ist also weitgehend nutzlos bei Strings, erstellt eine Kopie

Ich arbeite mit einem Tutorial und einem Buch:

Java Tutorial:
Java Tutorial interaktiv - Programmieren lernen mit Java

Java ist auch eine Insel:
Galileo Computing :: Java ist auch eine Insel –

Java ist auch eine Insel ist ein wirklich gutes Buch, jedoch für den Einstieg viel zu komplex. Wenn man noch nie zuvor etwas mit einer Programmiersprache zu tun hatte, ist es damit fast nicht machbar.
Das Tutorial ist sehr gut, da es alles von Anfang an sehr verständlich erklärt und man auch nicht gleich mit Informationen überladen wird. (Jedoch befindet sich dieses Beispiel darin :) )
 

faetzminator

Gesperrter Benutzer
Code:
str = "Ein Stringobjekt erzeugen" ;
weist der Variable "str" den Wert "Ein Stringobjekt erzeugen" zu. Soweit immer noch klar.

Code:
str = new String( "Ein Stringobjekt erzeugen" ) ;
In diesem Beispiel wird erst wirklich ein Objekt erzeugt, welches der Variable "str" zugewiesen wird. Respektive wird eine Referenz zur Klasse java.lang.String hergestellt.

Java hat die Spezialität, dass mit "..." im Code ein neues Stringobjekt erzeugt wird. Im zweiten Fall wird einfach noch ein neues Objekt erstellt. Es macht überhaupt keinen Unterschied.
Siehe Post von hdi:
Das ist eine Eigenart von Strings: Du kannst sie ohne Konstruktor erzeugen. Auch hier gibt es einen kleinen aber feinen Unterschied (Stichwort: String Constant Pool), der für den Anfang für dich erstmal nicht so wichtig ist.
Man soll in Java (in den Normalfällen) [c]new String(...)[/c] nicht verwenden. Siehe "String Constant Pool".
 
S

SlaterB

Gast
> Das ganze würde dann bedeuten, dass dieses Beispiel nicht gerade gut ist um die Erzeugung eines Objektes darzustellen, da "String" sowieso ein Spezialfall ist und ohne Konstruktor erzeugt werden kann.

absolut, wobei das nur der Compiler in besonderer Schreibweise erlaubt und ersetzt,
kein Java-mäßig gibt es da eher keine Sonderstellung, eine Klasse ist eine Klasse und String noch relativ normal

Arrays sind noch schlimmere Sonder-Klassen..
 

hdi

Top Contributor
Code:
String str;
sagt nur, dass die Variable "str" eine Zeichnkette sein darf, soweit noch klar
Genau. Im Falle von lokalen Variablen ist da noch nix drin, d.h. du kannst auch nicht lesend darauf zugreifen bevor du nicht etwas zugewiesen hast. Bei Klassen- oder Instanz-Variablen ist der Wert anfangs "null", was mehr oder weniger auch nichts ist.


Der Unterschied wäre dann, dass mit "new String" ein Objekt erzeugt wird, welches Daten und Mehoden enthalten kann. Mit "String str;" jedoch nur definiert wird, dass es sich um eine Zeichenkette handelt. Ist das richtig so?
Nein, beide Varianten erzeugen ein String-Objekt. Der Unterschied liegt darin dass bei der Direkt-Erzeugung ohne Konstruktor der String Constant Pool (bitte googlen) herangezogen wird, und bei Verwendung des Konstruktors auf jeden Fall ein neues Objekt erzeugt wird.

edit: ups sorry, verlesen. Ich dachte du meintest str = "Text". Ja wie gesagt, String str; ist nur eine Variablen-Deklartion, kein String-Wert bzw -Objekt.


Das ganze würde dann bedeuten, dass dieses Beispiel nicht gerade gut ist um die Erzeugung eines Objektes darzustellen, da "String" sowieso ein Spezialfall ist und ohne Konstruktor erzeugt werden kann.
Ja, genau. Strings sind spezielle Objekte in vielerlei Hinsicht. Besser du übst das ganze mit einer eigenen einfachen Klasse.


Java ist auch eine Insel ist ein wirklich gutes Buch, jedoch für den Einstieg viel zu komplex. Wenn man noch nie zuvor etwas mit einer Programmiersprache zu tun hatte, ist es damit fast nicht machbar.
Das Tutorial ist sehr gut, da es alles von Anfang an sehr verständlich erklärt und man auch nicht gleich mit Informationen überladen wird. (Jedoch befindet sich dieses Beispiel darin :) )
Schau mal in meine Signatur..
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
M Objekt einer Klasse speichert die Veränderung nicht Java Basics - Anfänger-Themen 1
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
S Objekt einer Klasse OnClick Java Basics - Anfänger-Themen 5
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
C Klassen Objekt der Instant-Klasse Java Basics - Anfänger-Themen 6
N Objekt in Methode einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
K Objekt einer Klasse weitergeben Java Basics - Anfänger-Themen 1
E Methoden Auf Methoden einer Klasse zugreifen, ohne ein Objekt zu erstellen Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
S Klassen Auf Objekt in Klasse A in Klasse B zugreifen Java Basics - Anfänger-Themen 4
G Auf Objekt der selben Klasse zugreifen Java Basics - Anfänger-Themen 2
G Objekt wie Objekt anderer Klasse behandeln Java Basics - Anfänger-Themen 4
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
R Compiler-Fehler Klasse A nutzt Objekt von Klasse B, um Methode von Klasse B auszuführen Java Basics - Anfänger-Themen 11
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
V Aufrufendes Objekt bestimmen (nicht die Klasse) Java Basics - Anfänger-Themen 3
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
X Objekt in einer Klasse aufrufen Java Basics - Anfänger-Themen 13
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
K Kapselung Von Klasse auf Objekt zugreifen Java Basics - Anfänger-Themen 8
S Polymorphes Objekt in eigentliche Klasse casten Java Basics - Anfänger-Themen 6
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
K Klassen Objekt mit einem Namen von einer bestimmten Klasse instanziieren Java Basics - Anfänger-Themen 10
L Objekt.methode(new Klasse().methode()); Java Basics - Anfänger-Themen 7
B Klassen über Main Klasse in einer anderen Klasse ein Objekt erstellen Java Basics - Anfänger-Themen 5
N Klassen Klasse - Objekt - Methode Java Basics - Anfänger-Themen 6
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
S Vererbung/Herausfinden welches Objekt von welcher Klasse Java Basics - Anfänger-Themen 4
S OOP Auf ein Objekt von einer anderern Klasse zugreifen Java Basics - Anfänger-Themen 3
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
I Einzelnes Objekt einer Klasse bekommen Java Basics - Anfänger-Themen 9
F Klasse bzw Objekt in eigenen Thread auslagern Java Basics - Anfänger-Themen 3
C Objekt von Klasse im gleichen Paket erzeugen Java Basics - Anfänger-Themen 8
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
J Unterschied Klasse Objekt Java Basics - Anfänger-Themen 4
V objekt einer Klasse erstellen Java Basics - Anfänger-Themen 21
G objekt der selben klasse erzeugen Java Basics - Anfänger-Themen 4
G Objekt der Klasse vs. Objekt des Typs Java Basics - Anfänger-Themen 4
G Methodenaufruf über ein Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Prüfen, ob Objekt von einer Klasse ist Java Basics - Anfänger-Themen 3
T Zugriff auf umgebendes Objekt mittels Objekt innerer Klasse Java Basics - Anfänger-Themen 2
T klasse objekt, syntax Java Basics - Anfänger-Themen 2
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
G Objekt öffnen von einer anderen Klasse öffnen Java Basics - Anfänger-Themen 6
° Zugriff auf ein Objekt der eigenen Klasse Java Basics - Anfänger-Themen 2
D Objekt der Methode einer anderen Klasse zuordnen Java Basics - Anfänger-Themen 6
G Problem bei der Angabe von Attributen in einer Objekt-Klasse Java Basics - Anfänger-Themen 3
J Attribut vom Objekt einer eigenen Klasse setzen Java Basics - Anfänger-Themen 6
J Objekt aus anderer Klasse und Package erzeugen Java Basics - Anfänger-Themen 11
E Klasse- Objekt - Klassenobjekt :? Java Basics - Anfänger-Themen 9
L Klasse(Objekt) <=> Klasse <=> Klasse Java Basics - Anfänger-Themen 5
A Objekt der ganzen Klasse zugängig machen Java Basics - Anfänger-Themen 7
S Variabler Name für ein Objekt einer Klasse? Java Basics - Anfänger-Themen 10
M Methode bekommt ein Objekt der Klasse als Parameter. Wozu? Java Basics - Anfänger-Themen 4
M objekt (linkedList) zugriff aus einer anderen klasse Java Basics - Anfänger-Themen 3
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
melaniemueller Fernseher als Objekt Java Basics - Anfänger-Themen 9
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102

Ähnliche Java Themen

Neue Themen


Oben