私のコードには、10000 のような多くの最終値がありますif(number1 == number2)
。
int
またはInteger
そのような数値を使用する方が良いですか?
あなたの場合、使用しますint
。
一般的に、プリミティブ値のいずれかを適切に使用できる状況にある場合、ほとんどの場合、次のプリミティブ値が優先されます。
Integer
型の場合はそうではありません.equals()
。必要なものを確実に取得するには、使用する必要があります。詳しくはこちらをご覧ください。最近では、メモリ要件はそれほど問題ではありませんが、2 番目に大きな落とし穴があります。これは、知らないと多くのバグが発生する可能性があるためです (特に、==
期待どおりに動作する場合があるため)。 、およびそれ以外の場合 - その意味では「信頼できる」バグではありません。)
Integer
s はオブジェクトであるため、メモリ内でより多くのスペースを占有します。Integer
メソッドを使用したり、オブジェクトである必要があるものを使用したことがない場合、はプリミティブ型であるint
ため、メモリ効率が高くなります。int
大まかに言えば、最新のコンピューターのメモリ量を考えると、おそらく問題にはならないでしょう。安全でも害はありません。
==
for Integer
sを使用している場合は、参照が同じかどうかを確認していることに注意してください。Integer
オブジェクトの場合、メソッドequals()
が優先されます。
プリミティブ型であるため、int を使用します。本格的なラッパー オブジェクトを選択する代わりに、プリミティブ型を選択する方がメモリ効率が高いため、常により良いオプションです。
int
かどうかはあまり関係ありませんInteger
。Java では、autoboxingを使用することで非常に交換可能です。
ただし、それらをコレクションに保存する場合は違いがあります。コレクションはオブジェクトのみを受け入れます。つまり、 を使用する必要がありますInteger
。
使用することに決め、Integer
それらを比較したい場合は、使用しないでください==
。代わりに、compareTo
メソッドまたは メソッドを使用してequals
ください。
参照を比較しているので、int を使用することをお勧めします。「==」を使用して整数オブジェクト (または Float、Double、Short、Character、Byte、Long、BigDecimal...) が等しいかどうかを比較しないでください。プリミティブ形式の数値を比較します。つまり、int、short、long、double で動作します。
整数を比較したい場合は、compareTo() メソッドを使用します。
定数の場合は、を使用します。定数の場合int
と同様に、値を取得できる必要があるだけです。この場合、付属する他のすべてInteger
は冗長です。
整数をパラメーターとして渡す必要があるInteger
場合は、パラメーター値のオプションをもう1つ取得するので便利ですnull
(つまり、パラメーターが無効な場合、または値がない場合)。
可能な場合は int を使用し、必要な場合は Integer を使用します。
値が null の場合でも使用できますInteger
が、メソッドを使用してそれらcompareTo
をEquals
比較する必要があります。
値を null にできない場合は、 を使用int
してください。そうすれば、従来の演算子==
、>=
、<
などを使用した読みやすいコードが得られます。
// int primitive, easy to handle
int a = 5;
int b = 5;
int c = null; // Compile error, can't have null primitive values
if(a == b) // True
if(a > b) // False
if(a >= b) // True
// Integer, more complicated:
Integer A = new Integer(5);
Integer B = new Integer(5);
Integer c = null; // Work
if(A == B) // False, they are not the same objects
if(A.equals(B)) // True, same value
if(A > B) // Compile error...
if(A.compareTo(B)>0) // A > B, the int version is more readable
if(A.compareTo(B)>=0) // A >= B, the int version is more readable