APIがlongor Longまたはintor を使用しているのを見かけることがありますIntegerが、そのための決定がどのように行われるのか理解できません。
何を選択すればよいですか?
APIがlongor Longまたはintor を使用しているのを見かけることがありますIntegerが、そのための決定がどのように行われるのか理解できません。
何を選択すればよいですか?
回答:
LongあるObject形態long、及びIntegerのオブジェクト形式ですint。
long使用する64ビット。int使用する32ビット、そうのみ±2億番号を保持することができる(-2 31 +2へ31 -1)。
あなたは使用する必要がありますlongとint、あなたはから継承されたメソッドを利用するために必要がある場合を除きObject、などhashcode。Java.util.collectionsメソッドは通常、ボックス化(Object-wrapped)バージョンを使用します。これは、メソッドがany Objectで機能する必要があり、intまたはのようなプリミティブ型longがでないためObjectです。
もう1つの違いは、ということであるlongとintされている値渡し、一方LongとIntegerされている参照渡し値すべての非プリミティブJava型等、。つまり、Longor を変更することが可能である場合Integer(そうでない場合は、JNIコードを使用せずに不変です)、どちらかを使用する別の理由があります。
最後の違いは、LongまたはであるInteger可能性があるということnullです。
プリミティブ型ではできないことがいくつかあります。
null値をObjectのこれらのいずれかが必要でない限り、必要なメモリが少ないため、プリミティブ型を優先する必要があります。
Int32 bits (4byte)-2,147,483,648 to 2,147,483,647Long64 bits (8byte)-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
変数の使用法が32ビットの範囲内にある場合Intは、を使用し、そうでない場合はを使用しますlong。通常longは科学的な計算などに使用され、そのようなものにはかなりの精度が必要です。(例えば、piの値)。
どちらを選ぶかという例は、YouTubeの場合です。彼らは最初に、ビデオビューカウンターを
int2,147,483,647回を超えるビューが人気のあるビデオに受信されたときにオーバーフローしたものとして定義しました。以来Intカウンタが、よりその範囲よりもより任意の値を格納することはできません、YouTubeは64ビット変数にカウンターを変更し、今9,223,372,036,854,775,807ビューにカウントアップすることができます。データを理解し、64ビット変数が32ビット変数の2倍のメモリを使用するように適合するタイプを選択します。
32ビットを超える可能性のある非常に長い数値を使用する場合は、longを使用して、奇妙な動作が発生しないようにすることができます。
Java 5以降では、インボックス機能とアウトボックス機能を使用して、intとIntegerをまったく同じように使用できます。それはあなたができることを意味します:
int myInt = new Integer(11);
Integer myInt2 = myInt;
ボクシングinとout(のための同じあなたは、追加、変換することなく、int型と整数を切り替えることができLong、Double、Shortあまりにも)
あなたは使用することができint、すべての時間を、しかしInteger(のような整数で、いくつかの複雑な操作を行うためにあなたを助けることができるいくつかのヘルパーメソッドが含まれていますInteger.parseInt(String))
a)オブジェクトクラス「Long」とプリミティブ型「long」。(少なくともJavaでは)
b)プリミティブ型のメモリサイズには、異なる(不明確なものもあります)があります。
Java-すべてクリア:https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C ..ごちゃごちゃ:https : //en.wikipedia.org/wiki/C_data_types