2011-12-01 11 views
13

どのような設計上の理由からjavaにsizeof演算子がありませんか?それがC++やC#で非常に有用であることと、必要に応じて特定の型のサイズを取得する方法を知っていますか?なぜJavaにはsizeofがありません

+0

[Javaでは、オブジェクトのサイズを判断する最善の方法は何ですか?](http://stackoverflow.com/questions/52353/in-java-what-is-the-best-wayオブジェクトのサイズを決定する) –

+0

http://stackoverflow.com/questions/4115239/sizeof-java-object – birryree

+0

wellコレクションには.size()メソッドがあり、配列と文字列には.length( )。特にバイトが必要ですか? – aishwarya

答えて

22

size of primitive typesはJava言語によって明示的に指定されているためです。 JVMの実装には違いはありません。

さらに、その引数に応じてnew演算子によって割り当てが行われるため、必要なメモリ量を指定する必要はありません。

最大ヒープサイズの要件などを見積もるためにオブジェクトがどれくらいのメモリを使用するかを知ることは時々便利ですが、Java言語/プラットフォーム設計者はそれが重要な側面だとは思わなかったと思います。

+0

みんな、C#と同じです。設計上の理由があると思います –

+1

デザインの結果です。 – nullpotent

+8

"人々はJavaでの不在を批判しました"とは、C#の多くの事柄の設計上の理由です。 – Affe

7

Inは、手動でメモリを割り当てて解放する必要があるため、有用です。ただし、javaでは自動ガベージコレクションが存在するため、これは必須ではありません。

+0

まで... – nullpotent

+0

私は時にはそれが役に立つかもしれないことを知っていますが、@ mericsが指摘したように、おそらくデザイナーはそれを言語仕様に追加する必要はないと思ったでしょう。オブジェクトのサイズを知る方法はまだありますが、質問のコメントの1つを確認してください。 – rabusmar

1

Javaでは、メモリで直接動作しないため、通常はオブジェクトのサイズを確認する場合はは不要です。this questionをチェックしてください。

0

Cははsizeofを必要としていました。またはそれは少なくともそれまで慣れていた。 :-) Javaでは、すべてのサイズで、ビット構成(IEEE 754など)がよりよく定義されています。

EDIT - @Maericsが彼の答えにJava仕様へのリンクを提供しています。

関連する問題