Long vs Integer,long vs int,什么时候使用?

2022-01-17 00:00:00 numbers types java

有时我看到 API 使用 longLongintInteger,但我想不通如何做出决定?

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?

我应该什么时候选择?

推荐答案

LonglongObject形式,Integerint的对象形式.

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).

你应该使用longint,除非你需要使用继承自Object的方法,例如hashcode.Java.util.collections 方法通常使用盒装(Object-wrapped)版本,因为它们需要适用于任何 Object 和原语类型,如 intlong,不是 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.

另一个区别是 longint 是 pass-by-value,而 LongInteger 是 pass-by-reference 值,与所有非原始 Java 类型一样.因此,如果可以修改 LongInteger (不是,它们在不使用 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.

最后一个区别是 LongInteger 可以是 null.

A final difference is that a Long or Integer could be null.

相关文章