Definition / Deklaration

  • Themenstarter Themenstarter geBlain
  • Beginndatum Beginndatum
G

geBlain

Gast
Hallo,

wie sieht eine Deklaration eines Strings aus und wie eine Definition?

Deklaration= String name = new String();
Definition= String name = new String("hallo");

Ist das so richtig?

MFG
 
Hm, ne, ich glaube nicht.
Ich denke die Begriffe nehmen sich bei Variablen nichts.
Bei Methoden z.B.: bei Interfaces deklarierst du die Methoden. Wenn du das Interace dann implementierst, dann Definierst du diese.

Aber unabhängig davon, ob es ein Unterschied zwischen Deklaration und Definition gibt: Deine 2 Beispiele sind gleich.
 
Zuletzt bearbeitet:
Ich kenne nur Deklaration und Initialisierung

int a; vs int a = 2;

Bei Strings sind String s = "hallo" und String s = new String("hallo")
weitestgehend identisch.
 
Zuletzt bearbeitet:
Bei Strings sind String s = "hallo" und String s = new String("hallo")
weitestgehend identisch.

Nicht wirklich. String s = "hallo"; ist ein Stringliteral und landet im Pool. Somit erfolgt auch die Speicheroptimierung, weil zuvor gecheckt wird, ob bereits ein gleiches Stringliteral im Pool existiert. String s = new String("hallo"); erzeugt dir mit 100%iger Wahrscheinlichkeit ein neues Stringobjekt und landet afaik nur aufm heap (wenn ich dabei falsch liege, lasse ich mich gern eines besseren beraten 😳).

What is String literal pool?

@topic:
also würde auch sagen, dass Deklaration bzw. Definition die Typisierung und Namensgebung ist und Initialisierung die Wertzuweisung.
 
Zuletzt bearbeitet:
Du hast natürlich recht, was die Pool-Darstellung betrifft. Aber ist das bei heutigen Ressourcen noch bedeutend? Andere Gründe gibts bestimmt, aber in komplexere Programme/Probleme bin ich noch längst nicht vorgedrungen 🙂
 
Du hast natürlich recht, was die Pool-Darstellung betrifft. Aber ist das bei heutigen Ressourcen noch bedeutend? Andere Gründe gibts bestimmt, aber in komplexere Programme/Probleme bin ich noch längst nicht vorgedrungen 🙂
Das ist genau der Grund, warum man für jedes Spiel einen neuen Rechner braucht: "Code optimizieren? Tzzzz... wer braucht den so ein Quatsch... lass den User einfach mehr blechen".😛ueh:
 
Es ist in dem Stringfall lediglich relevant, damit man nicht "==" für Stringvergleiche benutzt.

Weil du dann genau dieses Problem hast

new String("Hallo") ist ungleich "Hallo" aber "Hallo".equals(new String ("Hallo)) = true
 
würde sagen ja 🙂

Es ist in dem Stringfall lediglich relevant, damit man nicht "==" für Stringvergleiche benutzt.

Weil du dann genau dieses Problem hast


new String("Hallo") ist ungleich "Hallo" aber "Hallo".equals(new String ("Hallo)) = true

schreib jetzt vom iPhone, also kann ich schwer den Compiler fragen aber ausm Kopf würd ich sagen letzteres ergibt false. wie gesagt, das erzeugt ein neues Objekt aufm heap und nicht im Pool als Literal.
 
Zuletzt bearbeitet:
Ich käme nie auf die Idee Strings mit new zu deklarieren...bin ich jetzt ein braver Coder? :rtfm:

Ich bin einfach über die Straße gelaufen, zufällig war die Ampel auf grün. Bin ich jetzt ein gesetzttreuer Bürger? 🙂
Natürlich lassen sich manche Sachen bei heutigen Größen vernachlässigen, aber Kleinvieh macht auch Mist.
 
Du hast natürlich recht, was die Pool-Darstellung betrifft. Aber ist das bei heutigen Ressourcen noch bedeutend?
Das kommt darauf an, was man macht. Für HelloWorld ist es unbedeutend. Hat man aber ohnehin schon viele Tausende Objekte in einigen Gigabyte verteilt, kämpft mit kompletten Speicherbereinigungen und blockierten JVMs, dann möchte man sicherlich nicht noch mehr Objekte anhäufen.
 
Hallo,

wie sieht eine Deklaration eines Strings aus und wie eine Definition?

Deklaration= String name = new String();
Definition= String name = new String("hallo");

Ist das so richtig?

MFG
Google ist Dein Freund.

http://de.wikipedia.org/wiki/Deklaration_%28Programmierung%29 hat gesagt.:
In der Informatik und Programmierung ist eine Deklaration die Festlegung von Dimension, Bezeichner, Datentyp und weiteren Aspekten einer Variablen oder eines Unterprogramms. Durch die Deklaration wird dem Compiler diese Variable bzw. dieses Unterprogramm bekannt gemacht; es ist damit zulässig, diese an anderen Stellen im selben Quelltext zu verwenden.

Bei Variablen spricht man von Definition, wenn der Compiler Code erzeugt, der entweder statisch (im Datensegment) oder dynamisch (zur Laufzeit) Speicherplatz für diese Variable reserviert. Bei Unterprogrammen spricht man von Definition, wenn an dieser Stelle der Quelltext des Unterprogramms angegeben ist, der vom Compiler übersetzt wird.

Deine Beispiele sind nicht korrekt.
String name = new String("hallo");
ist sowohl Deklaration als auch Definition. Tatsächlich muss das so aussehen:
String name; --> Deklaration
name = "hallo"; --> Definition
 

Neue Themen


Zurück
Oben