2013-06-05 10 views
7

データ型byte、shortおよびcharが内部的にintとして扱われることをJVM仕様で読みました。 小さいサイズのメリットがない場合、これらのデータ型を持つ理由は何ですか?データ型byte、charおよびshortが必要な理由

+3

大部分はアレイ用です。 shortの配列は、同じサイズの整数の配列の半分のメモリを使用します。 – MTilsted

+3

ある積分値が特定のポイントでオーバーフローすることを期待するなど、さまざまな積分タイプの値域に応じて多くのアルゴリズムが存在すると確信しています。 –

+1

メモリの問題とは別に、これらの基本的な数値型は、通信プロトコルやJavaコードの外で定義されたコンパクトな構造とやりとりするコードを処理する場合に便利です。もちろん、言語の設計者が本当にこの使用例を気にしていれば、 'b&0xFF'のようなひどい手口を必要としないように、unsigned型を言語に追加するでしょう... –

答えて

8

部分では、C/C++との互換性のためだ、部分的には、メモリを節約するためです - 内部、ショートが短いとしてに格納され、それは整数としてを処理します。 new short[10]は、メモリの半分を占めています。new int[10]

+2

+1:ほとんどの配列。スタックまたはローカル変数では、 'byte 'は' int'(JVMが望むならば、それを最適化できるフィールド)と同じくらいのスペースを占めます。 –

1

メモリを節約するためのものです。各変数にはメモリ空間があります。スペースのサイズは、使用する変数のタイプによって異なります。

それ以外の場合は、文字列を操作するときにchar型が非常に便利です。実際には、string.charAt(インデックス)を使用して文字列の1文字を持つことができます

1

回答は非常に良いですが、別の可能性がある使用を指摘します。データ型のコンパイル時チェックを行うことができます。たとえば、人の年齢(年)を1バイトとして持つことができます。コンパイル時にintやshortに格納された大きな値がそのフィールドに使用されることを確認することができます。

関連する問題