Primitive Datentypen Literal 8072

Antegra Tekkrebell

Antegra Tekkrebell

Mitglied
Ich bin beim online Vokabeltraining über primitive Datentypen. Bei der Frage Welchen Datentyp hat das Literal: 8072 ? kommt die Antwort int raus. Ich hätte short eingegeben weil es ja deutlich im Wertebereich liegt, warum also int?
 
Robat

Robat

Top Contributor
Könnte mir höchstens vorstellen, dass nicht die Dezimalzahl 8072 sondern die Hexadezimalzahl 0x8072 gemeint ist.
Ist aber eher ins blaue geraten.
 
M

Meniskusschaden

Top Contributor
Meines Erachtens gibt es in Java nur zwei Integer-Literale, nämlich long und int, aber nicht short.
 
M

Meniskusschaden

Top Contributor
Ich hätte short eingegeben weil es ja deutlich im Wertebereich liegt, warum also int?
Es ist nicht der Wertebereich maßgeblich, sondern das Suffix (L für long oder kein Suffix für int). Wenn ein int-Literal zu groß für den Wertebereich ist, wird es nicht automatisch zu einem long-Literal, sondern es ist dann eben ein ungültiges int-Literal.
 
Antegra Tekkrebell

Antegra Tekkrebell

Mitglied
Meines Erachtens gibt es in Java nur zwei Integer-Literale, nämlich long und int, aber nicht short.
Es gibt aber vier Integer Literale in Java. Byte, short, int und long.
An integer literal is of type long if it ends with the letter L or l; otherwise it is of type int.

aus:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Danke schön, da steht alles gut zum lesen.
Es ist nicht der Wertebereich maßgeblich, sondern das Suffix (L für long oder kein Suffix für int).
Ok hab alles verstanden danke.
 
Antegra Tekkrebell

Antegra Tekkrebell

Mitglied
Datentypen für Ganzzahlen(integer) sind byte, short, int und long
http://java-samples.com/showtutorial.php?tutorialid=260

byte, short, int und long sind aber keine Literale, sondern Datentypen.
Genau, primitive Datentypen. Und Literale repräsentieren selbst einen Wert. Und byte, short, int und long kann man für Integer-Literale verwenden. Oder korrigiere mich wenn ich falsch liege.

Beispiel 1(ich habe das int durch ein short ersetzt):
Java:
public class Beispiel
{
  public static void main ( String[] args )
  {
    [B]short[/B] lohnbetrag = 22500;    //Ganzzahlliteral

    System.out.println("Die Variable enthaelt: " + lohnbetrag );
  }
}

Beispiel 2(ich habe das int durch ein byte ersetzt):
public class Beispiel
{
  public static void main ( String[] args )
  {
    byte lohnbetrag = 125;    //Ganzzahlliteral

    System.out.println("Die Variable enthaelt: " + lohnbetrag );
  }
}
beide Beispiele funktionieren.
kann man in Java int- und long-Literale angeben, aber keine byte- und short-Literale.
Doch kann man! Siehe Beispiel oben. Nur weil man byte und short kaum verwendet, heißt das nicht, dass man das nicht verwenden kann.
 
Zuletzt bearbeitet:
M

Meniskusschaden

Top Contributor
@Antegra Tekkrebell: In deinem Beispiel byte lohnbetrag = 125; erkennt der Compiler, dass das Literal 125 vom Datentyp int ist, für die Zuweisung zu lohnbetrag aber der Datentyp byte benötigt wird. Der Compiler führt deshalb eine Konvertierung von int in den Zieldatentyp byte durch. Das was lohnbetrag da zugewiesen wird, ist also schon nicht mehr das ursprüngliche Literal, sondern das Ergebnis einer impliziten Weiterverarbeitung des Compilers. Solche Konvertierungen sind nicht immer möglich, hier geht es aber. Entsprechend auch bei deinem short-Beispiel.
 
M

Meniskusschaden

Top Contributor
Aber ist es denn nicht die Aufgabe den Datentyp selbst zu bestimmen? Oder beides, den Datentyp und Wert?
In deiner Ausgangsfrage ging es darum, den Datentyp des gegebenen Literals zu nennen. Deshalb ist int die richtige Antwort. Man könnte auch danach fragen, welchen Datentyp man mindestens benötigt, um den gegebenen Wert zu speichern. Dann wäre short die richtige Antwort gewesen.
 
T

tryn4x

Mitglied
Hallo.

Das Thema ist zwar schon älter aber das Problem bleibt.
In meinem Buch steht: (unverändert und auch nicht aus dem Kontext gerissen)

Da mit einem Literal kein Datentyp verbunden ist, muss der Compiler den Datentyp aus der Syntax des Literals ablesen.

Wenn ich aber schreibe: (wie es auch im Buch steht)

double krummeZahl = 47.11;

hat das Literal doch einen Datentyp, steht ja am Anfang der Deklaration.:

double NAMEDERVARIABLE !

Warum also hat ein "Literal" kein Datentyp?

Falls da jemand noch eine Antwort hat:
Danke und Grüße

edit:

oder ist es evtl. so:
da die Zuweisung auf der rechten Seite zuerst ausgeführt wird, der Compiler aber da noch nicht weiß was 47.11 ist? und daher den Datentyp bestimmen muss?!

Ich hoffe mein Satz ist verständlich.
Danke nochmal.

edit1: (nochmal nachgedacht)

oder aber es liegt an der zuerst nur deklarierten variable, später dann definierten. (wobei in Java wohl nicht unterschieden wird)

double krummeZahl;
krummeGahl = 47.11;

hier wäre mir aber nicht ganz klar das der Compiler den datentyp des Literals nicht kennt bzw noch unbekannt ist. Es wird ja von oben nach unten gearbeitet wird.

Danke ein letztes mal.
 
Zuletzt bearbeitet:
kneitzel

kneitzel

Top Contributor
Also ich würde sagen, dass da dein Buch schlicht nicht genau genug ist. Denn die Java Language Specification ist da doch recht genau in 3.10:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10

So gibt es in der JLS eine klare Menge an Literalen und diesen ist immer ein klarer Typ gegeben.

Bei Integer Literalen ist z.B. klar benannt, wann dies ein long und wann ein int ist.

Damit ist jedem Literal ein Typ zuordnet. Selbst dem Literal null ist ein Typ zugeordnet (null-Type)
 
T

tryn4x

Mitglied
Hallo @kneitzel
Vielen dank für ihre Antwort.
Ich kann leider nicht beurteilen ob das Buch genau oder ungenau ist. Ich kann mir aber vorstellen, das der Satz (nach reiflicher Überlegung) richtig ist.
Ein Literal allein hat auch kein Datentyp.
Ich glaube mittlerweile das mit dem Satz ein alleinstehendes Literal gemeint war.
Aber ein nettes mir "docs.oracle.com" zu verlinken,. bin leider nicht auf die Idee gekommen dort nachzusehen.
Danke und Grüße
Steffen
 
kneitzel

kneitzel

Top Contributor
Ein Literal an sich ist erst einmal nur eine Zeichenkette. Diese wird vom Compiler gelesen und ausgewertet. Wenn der Compiler ein Literal auswertet, dann erfolgt das nach der Java Language Specification und dann kommt da in der Tat ein konstanter Wert raus, der einen Typ hat.

Die Java Language Specification ist bezüglich Java Code sowas wie das Gesetz. Die Spezifikation gibt klare Vorgaben/Regeln vor und im Rahmen dieser Vorgaben/Regeln kann man dann agieren. Wir können also schauen, was dort steht. Dann kann man auch überlegen, ob es eindeutig ist oder nicht. Bezüglich des Typs besagt die Java Language Specification aber:
An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).
Damit ist dem Integer Literal aus meiner Sicht ein klarer Typ zugewiesen und ich sehe hier derzeit schlicht keinen Spielraum - unabhängig was da in irgendwelchen Büchern steht oder was andere für gut / besser halten würden.

Generell kann man dies sogar auch im Code testen. Wenn Du etwas hast wie:
Java:
Object obj = 1234;
Dann muss der Compiler das 1234 ja als Literal zu irgendwas auswerten. Wenn er das zu einem primitiven Typ auswertet, dann würde im Rahmen der Zuweisung das Autoboxing stattfinden. Und von obj könnte man sich z.B. die Klasse anzeigen lassen, also etwas machen wie:
Java:
System.out.println(obj.getClass().getSimpleName());

Dadurch würde man dies auch etwas kontrollieren können - so man beim Autoboxing dann nicht irgendwas unterstellt an Vorgängen.
 
B

berndoa

Bekanntes Mitglied
Ist zwar nicht mein Thema aber ich muss doch mal fragen:
Was genau soll ein "Literal" sein?
Für mich gibt es Datentypen und die haben feste Bereiche.
Also long, byte, short,int für ganzzahliges.

Aber was soll dieses "Literal" sein?
Nichts für ungut aber klingt für mich nahc so esoterischem Nonsens wie wenn die Amis ankommen mit ihrem "Sex vs gender" und man müsse da interpetierne welches Fabelwesen man genre als geschlecht hätte...
 
kneitzel

kneitzel

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
H null und primitive Datentypen Java Basics - Anfänger-Themen 6
S Nicht Primitive Datentypen Java Basics - Anfänger-Themen 5
F primitive Datentypen, String, Klassen Java Basics - Anfänger-Themen 16
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
A Referenztypen in primitive Konvertieren Java Basics - Anfänger-Themen 6
D primitive übergeben aus anderer klasse und alsLabel ausgeben Java Basics - Anfänger-Themen 4
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
Nicolex3 Größere Datentypen Java Basics - Anfänger-Themen 35
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
L Binären Bäume für beliebige Datentypen Java Basics - Anfänger-Themen 15
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
SHasteCode Datentypen Überlauf primitiver Datentypen Java Basics - Anfänger-Themen 4
S Datentypen Java Basics - Anfänger-Themen 14
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
S Datentypen Java Basics - Anfänger-Themen 4
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
H wählen des kleinstmöglichen Datentypen für Gleitkommazahlen. Java Basics - Anfänger-Themen 2
S Datentypen Java Basics - Anfänger-Themen 2
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
J Zusammenhang Numbers und nummerische Datentypen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
D Spezifikation abstrakter Datentypen Java Basics - Anfänger-Themen 3
W Datentypen Datentypen vergleichen Java Basics - Anfänger-Themen 4
B JAVA Datentypen/Überlauf Java Basics - Anfänger-Themen 4
I Erste Schritte HILFE bei Datentypen Java Basics - Anfänger-Themen 2
J Wertebereiche und Datentypen Java Basics - Anfänger-Themen 12
N Methode mit 2 Datentypen. Fehler? Java Basics - Anfänger-Themen 1
N Probleme mit Datentypen Java Basics - Anfänger-Themen 6
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
K new / Datentypen Java Basics - Anfänger-Themen 3
S Datentypen und ihre Größe Java Basics - Anfänger-Themen 21
T Variablen Varargs und beliebige Datentypen Java Basics - Anfänger-Themen 7
S Datentypen Sonderbehandlung primitiver Datentypen, fixe Konstanteninterpretation Java Basics - Anfänger-Themen 10
G Wertebereiche bei Datentypen Java Basics - Anfänger-Themen 10
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
H Mehrer Datentypen aus einer Methode ausgeben. Java Basics - Anfänger-Themen 25
O Array mit unterschiedlichen Datentypen ausgeben... Java Basics - Anfänger-Themen 16
A Generische Datentypen Java Basics - Anfänger-Themen 8
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
T ArrayList mit verschiedenen Datentypen verhindern Java Basics - Anfänger-Themen 8
N Bedingung für Datentypen Java Basics - Anfänger-Themen 3
R Array aus verschiedenen Datentypen Java Basics - Anfänger-Themen 29
J Datentypen Datentypen Java Basics - Anfänger-Themen 7
S Datentypen Array fill Methode - unterschiedliche Datentypen Java Basics - Anfänger-Themen 6
N ArrayList mit eigenem Datentypen Java Basics - Anfänger-Themen 3
B Wie kann ich unterschiedliche Datentypen in einem Feld abbilden? Java Basics - Anfänger-Themen 5
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
M Frage zu Datentypen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
O Rückgabewert mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 10
C Verwendung von primitiven Datentypen Java Basics - Anfänger-Themen 8
Spin Eigenen Abstrakten Datentypen Java Basics - Anfänger-Themen 28
J Datentypen Rechnen mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 3
B Wieviele bits belegen die Datentypen? Java Basics - Anfänger-Themen 2
S Alle Datentypen in byte Array und zurückwandeln Java Basics - Anfänger-Themen 2
C Explizite und implizite Datentypen Java Basics - Anfänger-Themen 12
Povlsen84 HashSet mit eigenen Datentypen Java Basics - Anfänger-Themen 6
J Verschieden Datentypen in ein "Array" Java Basics - Anfänger-Themen 13
M HashMap mit primitiven Datentypen Java Basics - Anfänger-Themen 10
SebSnake Operatoren für eigene Datentypen Java Basics - Anfänger-Themen 3
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
G Überladen von Konstruktoren mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 4
R datentypen konvertierung u modulorechnung Java Basics - Anfänger-Themen 15
G Wertebereiche und Datentypen Java Basics - Anfänger-Themen 3
W Datentypen in JAva Java Basics - Anfänger-Themen 2
G verschiedene datentypen in arraylist Java Basics - Anfänger-Themen 14
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
I Array für verschiedene Datentypen? Java Basics - Anfänger-Themen 5
E Eigenen datentypen erstellen Java Basics - Anfänger-Themen 14
Y Neuen Datentypen erstellen Java Basics - Anfänger-Themen 12
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
M Datentypen zu erzeugen? Java Basics - Anfänger-Themen 2
S Switch für komplexe Datentypen? Java Basics - Anfänger-Themen 7
7 Datentypen Java Basics - Anfänger-Themen 8
S Array mit mehreren Datentypen Java Basics - Anfänger-Themen 5
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
F Einlesen von verschieden Datentypen Java Basics - Anfänger-Themen 15
G Verschiedene Datentypen in Vector packen und zurück Java Basics - Anfänger-Themen 3
G Datentypen Java Basics - Anfänger-Themen 2
D Datentypen umwandeln Java Basics - Anfänger-Themen 4
M Datentypen Java Basics - Anfänger-Themen 6
J Datentypen Literal überschreitet long-Range, dennoch als long an Variable übergeben Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben