Definiert Java die Größe seiner primitiven Typen irgendwo?

8

Gibt es ein Paket, das die Größe von Java-Grundelementen definiert, die ich in mein Projekt importieren kann? Ich mache einige manuelle Bit-Einstellung und ich halte einen Byte-Index. Ich möchte nicht currentByte += 4 machen, wenn ich einen int (magische Zahlen sind verpönt) gesetzt habe, sondern currentByte += <SomePackage>.SIZE_OF_INT

Ich denke, ich kann meine eigenen definieren, aber das ist irgendwie klobig, besonders wenn diese irgendwo verfügbar sind.

    
ventsyv 02.04.2015, 15:35
quelle

2 Antworten

24

Keine Klasse, aber Sie haben Integer.SIZE und so weiter für Long und Gleitkomma-Klassen. Sie haben auch *.BYTES .

Daher ist Integer.SIZE 32, Integer.BYTES ist 4, Double.SIZE ist 64 und Double.BYTES ist 8 usw. usw .; all dies sind int s, falls Sie sich wundern.

HINWEIS: *.BYTES sind erst seit Java 8 definiert (danke @Slanec für das Bemerken)

( *.SIZE erschien in Java 5, aber Sie tun zumindest das, oder?)

Ja, dies wird vom JDK definiert, da JLS selbst die Größe primitiver Typen definiert; Sie haben daher garantiert, dass Sie für diese Konstanten in jeder Java-Implementierung auf jeder Plattform dieselben Werte haben.

    
fge 02.04.2015, 15:37
quelle
8

Die Spezifikation für die Größe von Primitiven ist in der Java-Sprachspezifikation enthalten Abschnitt 4.2

  

Die Integraltypen sind byte, short, int und long, deren Werte jeweils 8-Bit-, 16-Bit-, 32-Bit- und 64-Bit-Zweier-Komplement-Ganzzahlen sind, und char, deren Werte 16 sind. Bit vorzeichenlose Ganzzahlen, die UTF-16-Code-Einheiten darstellen (§3.1).

Dies ist der -Standard und wird nicht geändert, sodass Sie sie nicht importieren müssen. Sie können sie als magische Zahlen verwenden (allerdings als fge weist darauf hin, dass es sich um magische Zahlen handelt, die seit Java 5 an sinnvollen Stellen in den verschiedenen Wrapper-Klassen gespeichert sind, und Sie diese verwenden sollten, anstatt sie selbst neu zu definieren.

    
user289086 02.04.2015 15:39
quelle

Tags und Links