kein sizeof() in Java
Joey
- java
0 Slyh0 Marc Reichelt
Hi Leute,
es gibt in Java kein sizeof() wie in C++. Ich muß aber unbedingt wissen wieviel Byte ein Objekt vom Typ Double belegt (Double ist ne Hüllklasse für einen double-Wert). Oder anders gefragt: Gibt es keine Methode, die von einem beliebigen Objekt die Bytegröße abfragen kann?
Bin ziemlich genervt, weil ich in der Doku nichts finde.
Joey
Hallo,
Ich muß aber unbedingt wissen wieviel Byte ein Objekt vom Typ Double belegt.
Warum?
Gibt es keine Methode, die von einem beliebigen Objekt die Bytegröße abfragen kann?
Nicht direkt oder nicht dass ich wüßte.
Mir würden auch nur sehr wenige Gründe einfallen, wofür das gut wäre. Wofür
brauchst du das?
Der erste Google-Treffer zu "java sizeof" ist übrigens dieser hier:
http://www.javaworld.com/javaworld/javaqa/2003-12/02-qa-1226-sizeof.html
Gruß
Slyh
Hallo Joey,
es gibt in Java kein sizeof() wie in C++. Ich muß aber unbedingt wissen wieviel Byte ein Objekt vom Typ Double belegt (Double ist ne Hüllklasse für einen double-Wert). Oder anders gefragt: Gibt es keine Methode, die von einem beliebigen Objekt die Bytegröße abfragen kann?
Bin ziemlich genervt, weil ich in der Doku nichts finde.
Die Antwort hier ist: Es gibt kein "Objekt" vom Typ Double in Java.
double ist ein primitiver Datentyp und hat ergo _immer_ 64 bit (also 8 bytes).
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hello,
Die Antwort hier ist: Es gibt kein "Objekt" vom Typ Double in Java.
double ist ein primitiver Datentyp und hat ergo _immer_ 64 bit (also 8 bytes).
ähm, das kommt aber sehr darauf an, was du mit den Anführungszeichen um Objekt gemeint hast, java.lang.Double.
MfG
Rouven
Hi,
es gibt in Java kein sizeof() wie in C++. Ich muß aber unbedingt wissen wieviel Byte ein Objekt vom Typ Double belegt (Double ist ne Hüllklasse für einen double-Wert). Oder anders gefragt: Gibt es keine Methode, die von einem beliebigen Objekt die Bytegröße abfragen kann?
Die Antwort hier ist: Es gibt kein "Objekt" vom Typ Double in Java.
Doch, es gibt Objekte vom Typ Double (die Klasse Double ist von java.lang.Object abgeleitet wie jede Klasse, und Instanzen der Klasse Double sind dann die Objekte).
double mit kleinem d ist in der Tat ein primitiver Datentyp, Double mit großem D dagegen eine Klasse. (siehe auch Integer vs. int, Character vs. char, ...)
cu,
Andreas
Hallo MudGuard,
Die Antwort hier ist: Es gibt kein "Objekt" vom Typ Double in Java.
Doch, es gibt Objekte vom Typ Double (die Klasse Double ist von java.lang.Object abgeleitet wie jede Klasse, und Instanzen der Klasse Double sind dann die Objekte).
double mit kleinem d ist in der Tat ein primitiver Datentyp, Double mit großem D dagegen eine Klasse. (siehe auch Integer vs. int, Character vs. char, ...)
Ja, ich war etwas zu voreilig mit meiner Aussage.
Natürlich kann man Instanzen der Klasse "Double" anlegen - aber ich nahm an, dass diese dann genauso viel Speicher belegen wie ein "double"-Wert, da Java diese intern eventuell als "double" behandelt. Diese Annahme war nicht korrekt.
Den Speicherverbrauch eines Objektes muss man unter Java komplizierter berechnen - dieser Artikel beschreibt, wie es geht.
Im Prinzip muss man also nur die Größe aller Attribute berechnen. Da diese aber ebenso wieder Objekte sein können, wird das Ganze etwas komplizierter.
Summa summarum sollte eine Instanz der Klasse "Double" also 4 Byte Speicherverbrauch haben - denn sie hat ein Attribut vom Typ "double", das genau 4 Bytes im Speicher belegt. Dies lässt sich dem Quelltext der Klasse Double entnehmen.
Grüße
Marc Reichelt || http://www.marcreichelt.de/