Long vs Integer,long vs int,什么时候使用?
有时我看到 API 使用 long
或 Long
或 int
或 Integer
,但我想不通如何做出决定?
Sometimes I see API's using long
or Long
or int
or Integer
, and I can't figure how the decision is made for that?
我应该什么时候选择?
推荐答案
Long
是long
的Object
形式,Integer
是int
的对象形式.
Long
is the Object
form of long
, and Integer
is the object form of int
.
long
使用 64 位.int
使用 32 位,因此最多只能保存 ±20 亿的数字(-231 到 +231-1).
The long
uses 64 bits. The int
uses 32 bits, and so can only hold numbers up to ±2 billion (-231 to +231-1).
你应该使用long
和int
,除非你需要使用继承自Object
的方法,例如hashcode代码>.
Java.util.collections
方法通常使用盒装(Object
-wrapped)版本,因为它们需要适用于任何 Object
和原语类型,如 int
或 long
,不是 Object
.
You should use long
and int
, except where you need to make use of methods inherited from Object
, such as hashcode
. Java.util.collections
methods usually use the boxed (Object
-wrapped) versions, because they need to work for any Object
, and a primitive type, like int
or long
, is not an Object
.
另一个区别是 long
和 int
是 pass-by-value,而 Long
和 Integer
是 pass-by-reference 值,与所有非原始 Java 类型一样.因此,如果可以修改 Long
或 Integer
(不是,它们在不使用 JNI 代码的情况下是不可变的),还有另一个理由使用其中一个.
Another difference is that long
and int
are pass-by-value, whereas Long
and Integer
are pass-by-reference value, like all non-primitive Java types. So if it were possible to modify a Long
or Integer
(it's not, they're immutable without using JNI code), there would be another reason to use one over the other.
最后一个区别是 Long
或 Integer
可以是 null
.
A final difference is that a Long
or Integer
could be null
.
相关文章