Vielleicht hilft das, um der Sache auf die Schliche zu kommen:
Versuche, einfacher (sturer) zu denken.
Versuche, Literal duch ein Stück dummer Quelltext zu ersetzen.
Versuche, repräsentieren durch symbolisieren, ausdrücken oder stehen für zu ersetzen.
Zitat von
Lordkaiser
achsoo, ein Literal ist ein Wert, der durch etwas anderes im Code repräsentiert wird! (richtig?)
Nein, anders (trenne dich von "Code" (zu allgemein), unterscheide Quelltext von Programmcode):
Ein Literal ist kein Wert, sondern es repräsentiert im Quelltext (nicht im Programmcode) einen Wert. Mit dem Wert kann der Compiler etwas anfangen. Er kann z.B. diesen Wert an eine Variable zuweisen. An den Wert kann nichts zugewiesen werden.
Weil man in diesem Zusammenhang manchmal über den Begriff der Konstante stolpert:
Ein Literal ist keine echte Konstante (und schon gar keine konstante Variable), sondern lediglich eine symbolische Konstante. Das ist keine Spitzfindigkeit. Solange du den Eindruck hast, dass das spitzfindig wäre, hast du die Sache noch nicht durchdrungen. Andernfalls könntest du auf einem guten Weg sein. Nimm das als Prüfstein.
Also zu diesem Beispiel
Bsp.:
"Literals provide a means of expressing specific values in your program. For example, in the following statement, an integer variable named count is declared and assigned an integer value. The literal 0 represents, naturally enough, the value zero.
Numeric literal.
int count = 0;
"
Der Text "The literal 0 represents, naturally enough, the value zero." hatte mich verwirrt.
Es ist weniger, dass das Literal die Null "repräsentiert", sondern vielmehr, dass die Variable `count` das Literal "0" repräsentiert.
(richtig?)
Nein, du hast das leider verdreht.
Es ist eben doch so, dass das Literal 0 (wie es im Text steht) den Wert 0 repräsentiert und dass die Variable count mit diesem Wert (nicht mit dem Literal, sondern mit dem Wert, den das Literal repräsentiert) initialisiert wird.
count ist eine Variable, kein Literal. Variablen stehen nicht für Literale und speichern auch keine, sondern sie speichern jeweils einen Wert des angegebenen Typs (bei Objekten eine Referenz). Literale existieren im Quelltext, nicht im ausführbaren Programm (s.o.). Sie werden vom Compiler ausgewertet.
Kurz:
Die Variable count wird mit dem Wert 0 initialisiert, welchen das Literal 0 (was, vereinfacht gesagt, ein Stück Quelltext ist) repräsentiert.
Der Compiler liest also das Literal, deutet daraus den Wert, den es repräsentiert (dann kann er das Literal wegschmeißen) und sorgt beim Erstellen dafür, dass die Variable den zugewiesenen Wert rechtzeitig haben wird, also spätestens, wenn er zur Laufzeit gebraucht wird (nach den Vorgaben, die die Sprache macht, z.B. über die Initialisierungsreihenfolge, was aber durch Optimierungen geändert werden kann, wenn das Ergebnis gleichwertig ist).