100L

Status
Nicht offen für weitere Antworten.

Innocentus

Mitglied
Ich bin wieder auf etwas Seltsames gestoßen:
Java:
aj = 100L;

Was bedeuten die 100L? - Was ist das jetzt genau? Und warum verwendet man das?

Vielen Dank für eure Antworten im Voraus!
Mit freundlichen Grüßen
Innocentus
 

ARadauer

Top Contributor
das L steht hier für Long, man kann bei einer zahl, die ja eigentlich integer ist hinten einen datentyp angeben.

wozu es genau da ist.. mhn keine Ahnung

bei Float macht zb hier sinn

Java:
		float f1 = 1/2f;
		float f2 = 1/2;
		System.out.println(f1);
		System.out.println(f2);
da in der zweiten rechnung das 2 als integer wert gesehen wird. int/ int = int...
 
S

Spacerat

Gast
versuch' mal
Java:
long value = 0x100000000;
zu kompilieren. Das gibt in sofern Schwierigkeiten, da es sich bei dem Wert um einen Long-Wert handelt. Da in Java (wie auch in vielen anderen Programmiersprachen) aber "int" der Standarttyp ist, versucht die VM auch diesen zu nutzen. Ist also im Prinzip das Gegenteil von ARadauers Darstellung: Das L ist für initiale Long-Werte notwendig, die den Integerbereich über- bzw. unterschreiten.
 
Zuletzt bearbeitet von einem Moderator:

FatFire

Bekanntes Mitglied
Bei 100 machte 100L keinen Sinn
Mööp, macht Sinn, weil sonst eine Konvertierung von Integer nach Long durchgeführt werden muss, mit 100L ist es gleich ein Longiteral und wird auch als solches einkompiliert. Performancegewinn ist minimal, aber vorhanden.

Gruß FatFire

Edit: Hm, muss mich wohl korrigieren, inzwischen erkennt er das auch schon zur Compilezeit...wann hat sich das geändert? Ich kann mich dran erinnern, dass frühere Java-Compiler da deutlich dümmer ans Werk gegangen sind.
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
100 Liter, ist doch klar ;) Genau wie 20kg und 15m :lol:

Ne, mal im ernst: das macht manchmal auch dort sinn, wo alle literale in int reinpassen:
Java:
		long x = 21474837 * 100; 
		long y = 21474837 * 100L;
		System.out.println(x+" "+y);
ihr dürft 3 mal raten, welche Vorzeichen wo rauskommen werden...
 

0x7F800000

Top Contributor
Natürlich, aber hier läuft es auf das Beispiel von ARadauer raus.
jo. so richtig sinn macht's nirgends, es warnt den programmierer lediglich, dass eine konstante evtl. nicht in integer reinpasst. Bei Scala ist das aufgrund der begrenzten Tiefe bei der suche nach geeigneten impliziten Umformungen bisschen anders, bei bestimmten Situationen kompiliert
Code:
1+x
nicht, während
Code:
1L+x
geht. Aber das ist eine andere Geschichte :smoke:
Uhhh... 3 mal raten? Bei 2 Möglichkeiten? Das wird schwierig. Mal schauen ob ich es hinbekomme...
1. Keine Vorzeichen
2. Zeile 2 negativ
3. Zeile 1 negativ

Ok geht...
Falsch. Das Programm gibt nur eine Zeile aus, und in dieser kommt mindestens ein Minus vor :bae: naja, okay, 1. Zeile ist negativ^^ :oops:
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Oben