Deklaration und Definition

icarus2

Top Contributor
Huhu

Das scheint jetzt vielleicht eine etwas merkwürdige Frage zu sein, aber ein Thread in einem anderen Forum hat mich gerade verwirrt.

Da hat einer folgendes gesagt:

Java:
String name;    // Hiermit definierst du eine Reference (vom Typ String). 

name = "hallo"; // Hiermit definierst du ein Objekt (vom Typ String), und lässt dann die Reference darauf verweisen.

Ist das korrekt? :-/
 

Final_Striker

Top Contributor
Kann man so sagen, wobei das beim String ein wenig komplizierter ist.
Beim zweiten würde ich aber eher sagen: Hiermit erstellst du ein Objekt...
 

icarus2

Top Contributor
Hmm, für mich ist das erste eine Deklaration. Aber ich bin auf einmal unsicher geworden, weil man Strings ja nicht mit 'new' erzeugt.
 

energy47

Mitglied
muss man bei String nicht..
aber du darfst das machen:

Code:
String s = new String("hallo");

String s; deklariert eine variable von typ String
s = "hallo"; die referenz s von typ string zeigt auf einen String.. ich glaube mann kan auch sagen dass die referenz s auf die anfangs adresse eines char-arrays zeigt...
 

Marco13

Top Contributor
Ich glaube, eine Unterscheidung zwischen Deklaration und Definition macht nur Sinn, wenn dort ein Unterschied besteht (wie etwa bei C, mit Funktionsdeklarationen in Headerfiles und den Definitionen in den C files). In Java heißen die Dinger eigentlich "Variable Declaration Statements".


Die Formulierung dass bei
String s = "Hallo";
ein Objekt erstellt wird, ist ein bißchen fragwürdig. Strings sin da ein bißchen diffizil: Das String-Objekt wird dort nicht "erzeugt". Es ist vielmehr schon da. Strings liegen in einem Pool, und der wird... glaubich... schon vom ClassLoader gefüllt...(bei letzterem bin ich nicht 100% sicher, aber ... wo sonst?)
 

nrg

Top Contributor
Die Formulierung dass bei
String s = "Hallo";
ein Objekt erstellt wird, ist ein bißchen fragwürdig. Strings sin da ein bißchen diffizil: Das String-Objekt wird dort nicht "erzeugt". Es ist vielmehr schon da. Strings liegen in einem Pool, und der wird... glaubich... schon vom ClassLoader gefüllt...(bei letzterem bin ich nicht 100% sicher, aber ... wo sonst?)

ja? das würde mich aber mal genauer interessieren. afaik liegt nur jedes stringliteral im pool, welches zur Laufzeit der jvm schomal erzeugt wurde (vorausgesetzt es existiert eine referenz bzw der gc hat noch die finger davon gelassen). deshalb ist es auch imho besser strings immer mit literalen zu instanziieren, weil bei "new String();" diese optimierung der jvm nicht mehr gegeben ist.
 

Marco13

Top Contributor
ja? das würde mich aber mal genauer interessieren. afaik liegt nur jedes stringliteral im pool, welches zur Laufzeit der jvm schomal erzeugt wurde.

Ja, wie schon angedeutet, bei diesem Punkt bin ich mir nicht 100% sicher - allgemein eben die Frage, wie und wo der String-Pool verwaltet wird - und im speziellen, wie festgestellt wird, was daraus wieder gelöscht werden kann, und ob konstante Strings (die so im Classfile stehen) dort überhaupt wieder rausgelöscht werden. Jedenfalls stehen die konstanten Strings ja im Classfile, und wenn das einmal geladen ist, wird da mit Sicherheit kein String wieder rausgelöscht. Im Stringpool steht dann (ganz wild spekuliert und grob forumliert) vermutlich nur eine Referenz auf den String, der eh schon im runtime constant pool der Class-Daten liegt... vermutlich ... das müßte man sich mal genauer ansehen....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J definition / deklaration Java Basics - Anfänger-Themen 2
G Definition / Deklaration Java Basics - Anfänger-Themen 13
S Methoden Deklaration u. Definition trennbar (wie in C)? Java Basics - Anfänger-Themen 9
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
D Datentypen Char deklaration Java Basics - Anfänger-Themen 4
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
J Klassen Deklaration und Initialisierung Java Basics - Anfänger-Themen 15
R Erste Schritte Deklaration und Initialisierung von Arrays Java Basics - Anfänger-Themen 21
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
M Deklaration und Initialisierung bei Method Erstellung Java Basics - Anfänger-Themen 12
M Erste Schritte package-Deklaration, Problem Java Basics - Anfänger-Themen 6
M Frage zu Generics-Deklaration Java Basics - Anfänger-Themen 5
A Array Deklaration Java Basics - Anfänger-Themen 6
B Erste Schritte Unterschiede bei der Deklaration von Strings Java Basics - Anfänger-Themen 4
K Protected und Private Deklaration Java Basics - Anfänger-Themen 8
G Erste Schritte Methodenaufruf, Variablen-Deklaration Java Basics - Anfänger-Themen 6
K Erste Schritte deklaration von int Java Basics - Anfänger-Themen 4
S Methode Deklaration Variablen initalisieren Java Basics - Anfänger-Themen 2
E Erste Schritte Umstieg von PHP - Deklaration Java Basics - Anfänger-Themen 9
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
S Deklaration 0x12 Java Basics - Anfänger-Themen 4
M fehler bei instanzvariablen deklaration?? Java Basics - Anfänger-Themen 6
F Datentypen Welchen Wert hat ein einfacher Datentyp nach der Deklaration? Java Basics - Anfänger-Themen 6
I Datentypen Unterschied in Deklaration von ArrayList Java Basics - Anfänger-Themen 26
Luk10 Deklaration von lokalen Variablen Java Basics - Anfänger-Themen 2
J Was genau davon ist Anweisung, was Deklaration? Java Basics - Anfänger-Themen 2
S OOP package Deklaration Java Basics - Anfänger-Themen 4
S BITTE UM HILFE: Unterschied Deklaration und Signatur einer Methode Java Basics - Anfänger-Themen 3
A Deklaration von einem Array Java Basics - Anfänger-Themen 9
A Deklaration eines Arrays Java Basics - Anfänger-Themen 11
R Deklaration: was passiert da? Java Basics - Anfänger-Themen 3
G Deklaration und Sichtbarkeit von Variablen Java Basics - Anfänger-Themen 2
C Deklaration einer Variablen in einem rekursivem Aufruf Java Basics - Anfänger-Themen 5
K Variablen Deklaration Java Basics - Anfänger-Themen 3
B Deklaration eines char-array Java Basics - Anfänger-Themen 2
J Probleme mit Deklaration Java Basics - Anfänger-Themen 13
B variable deklaration und wert speichern in 2 anweisungen? Java Basics - Anfänger-Themen 20
L Variablen-Deklaration Java Basics - Anfänger-Themen 9
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
D Methoden Definition einer Methode Java Basics - Anfänger-Themen 3
M Datentypen Java Datentyp Definition Java Basics - Anfänger-Themen 6
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
S Erste Schritte Suche nach einem guten JAVA-Buch (Definition im Thread) Java Basics - Anfänger-Themen 6
S Methoden Klassen Definition - Methodenaufruf Java Basics - Anfänger-Themen 7
P Klassen Instanz einer Klasse in ihrer eigenen Definition erzeugen? möglich? Java Basics - Anfänger-Themen 4
D Entwurfsmuster - Frage und Definition Java Basics - Anfänger-Themen 9
H Definition von Java Mutex: ReentrantLock Java Basics - Anfänger-Themen 6
J Benötige kurze Definition zum Programm Java Basics - Anfänger-Themen 2
K Definition Java Basics - Anfänger-Themen 4
G Definition einer Array Java Basics - Anfänger-Themen 3
G Definition einer logischen Variablen Java Basics - Anfänger-Themen 4
S Generizität Definition Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben