私のJavaクラスでは、次のプリミティブデータ型のそれぞれについて学習しました。
byte
short
int
long
long
データ型にはほとんどのビットが含まれているため、制限を回避するためにlong
データ型のみを使用することは意味がありませんか?
質問
long
データ型のみを使用することに特別な欠点はありますか?int
データ型の代わりにlong
データ型を使用するのは理にかなっていますか?たとえば、
int
データ型の代わりにlong
データ型を使用するのは理にかなっていますか?
絶対にあります。
1つまたは2つの変数を使用するだけではパフォーマンスの違いはわかりませんが、アプリが大きくなるとアプリの速度が向上します。
チェック 詳細についてはこの質問 。
また、 Oracleプリミティブ型のドキュメント いくつかのアドバイスとメモリ使用量を確認できます。
type memory usage recommended for
------- --------------- ---------------------------------------------------
byte 8-bit signed The byte data type can be useful for saving memory in large arrays, where the memory savings actually matters.
short 16-bit signed same as byte
int 32-bit signed
long 64-bit Use this data type when you need a range of values wider than those provided by int
float Use a float (instead of double) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency.
byte
:
バイトデータ型は、8ビット符号付き2の補数整数です。最小値は-128、最大値は127(両端を含む)です。 バイトデータ型は、メモリの節約が実際に重要である大きな配列でメモリを節約するのに役立ちます。
short
:
短いデータ型は16ビット符号付き2の補数整数です。最小値は-32,768、最大値は32,767(両端を含む)です。バイトの場合と同様に、同じガイドラインが適用されます:メモリの節約が実際に重要な状況では、shortを使用して大きな配列のメモリを節約できます。
int
:
デフォルトでは、intデータ型は32ビット符号付き2の補数整数であり、最小値は-2³¹、最大値は2³¹-です。 1.1。 Java SE 8以降では、intデータ型を使用して符号なし32ビット整数を表すことができます。最小値は0、最大値は2³²-1です。
long
:
Longデータ型は64ビットの2の補数整数です。符号付きlongの最小値は-2⁶³、最大値は2⁶³-1です。 Java SE 8以降では、longデータ型を使用してunsigned 64ビットlongを表すことができます。最小値は0、最大値は2⁶⁴-1です。intで提供される値よりも広い値の範囲が必要な場合は、このデータ型を使用します。 )。
float
:
Floatデータ型は、単精度32ビットIEEE 754浮動小数点です。その値の範囲はこの説明の範囲を超えていますが、Java言語仕様の浮動小数点型、形式、および値のセクションで指定されています。バイトおよびショートの推奨事項と同様です。 、浮動小数点数の大きな配列にメモリを保存する必要がある場合は、(doubleではなく)floatを使用します。このデータ型は、通貨などの正確な値には使用しないでください。
また、それはあなたの心とあなたのコードを明確にします、例えばあなたがオブジェクトのIDを表す変数を持っているとしましょう、このオブジェクトIDは決して小数を使用しません、それであなたがあなたのコードで見るならば:
int id;
これで、このIDがどのように表示されるかを確認できます。
double id;
しません。
また、次の場合:
int quantity;
double price;
quantity
は小数(完全なオブジェクトのみ)を許可しませんが、価格は許可します...これにより、仕事(および他のプログラマーがコードを読む)が簡単になります。
範囲(特定のデータ型に格納できる最小値と最大値)とは別に、別の側面があります。それは変数のsize
です。
次の点にも注意する必要があります。
byte = 1 byte
short = 2 bytes
int = 4 bytes
long = 8 bytes
したがって、long
変数を使用するということは、それに8 bytes
のメモリを割り当てることを意味します。
何かのようなもの、
long var = 1000L
メモリの効率的な使用を示していません。最近GBがRAM)になったとしても、それを無駄にする必要があるわけではありません。
私が言いたい簡単なポイントは、メモリのより効率的な使用、より速いアプリになるということです。
メモリの必要性と速度のパフォーマンスは、long
を高価にします。
ただし、int
にはもう1つの利点があります。それは、int
部分式と簡単に混ざりすぎて、操作を間違って組み合わせると長い情報が失われる可能性があることです。 50のビットシフトは実際には18を実行します。 L
の接尾辞が付いた数字のみを使用することは1つの尺度になります。また、long
は、int
乗算やその他のそのような操作のオーバーフローキャプチャとして機能する場合があります。この場合、オーバーフローを長時間検出するだけで実行できます。
int
の場合、byteとshortの「すべての」操作がint
に伝播することに注意してください。