APIがlong
or Long
またはint
or を使用しているのを見かけることがありますInteger
が、そのための決定がどのように行われるのか理解できません。
何を選択すればよいですか?
APIがlong
or Long
またはint
or を使用しているのを見かけることがあります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型等、。つまり、Long
or を変更することが可能である場合Integer
(そうでない場合は、JNIコードを使用せずに不変です)、どちらかを使用する別の理由があります。
最後の違いは、Long
またはであるInteger
可能性があるということnull
です。
プリミティブ型ではできないことがいくつかあります。
null
値をObject
のこれらのいずれかが必要でない限り、必要なメモリが少ないため、プリミティブ型を優先する必要があります。
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
変数の使用法が32ビットの範囲内にある場合Int
は、を使用し、そうでない場合はを使用しますlong
。通常longは科学的な計算などに使用され、そのようなものにはかなりの精度が必要です。(例えば、piの値)。
どちらを選ぶかという例は、YouTubeの場合です。彼らは最初に、ビデオビューカウンターを
int
2,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