I k*_*e V 131 java types numbers
有时我看到API使用long或Long或int或Integer,我无法确定如何做出决定?
我什么时候应该选择什么?
Bor*_*lid 184
Long是Object形式long,Integer是对象的形式int.
在long采用64位.在int使用32位,所以只能容纳人数达到±2十亿(-2 31到2 31 -1).
您应该使用long和int,除非您需要使用从中继承的方法Object,例如hashcode.Java.util.collections方法通常使用盒装(Object包装)版本,因为它们需要适用于任何版本Object,而原始类型,如int或long,不是Object.
另一个区别是,long和int是通过按值,而Long与Integer是通过按基准值,像所有的非原始Java类型.因此,如果可以修改a Long或Integer(它不是,它们在不使用JNI代码的情况下是不可变的),那么另一个原因就是使用一个而不是另一个.
最后的区别是a Long或者Integer可能是null.
Mic*_*rdt 27
对于原始类型,您可以做一些事情:
null值Objects 一起使用的API除非你需要其中任何一个,否则你应该更喜欢原始类型,因为它们需要更少的内存.
Joa*_*uer 21
int,在持有数字时使用.int太小,请使用alonglong太小,请使用BigIntegerCollection,处理null,...时)使用Integer/ Long而不是Jes*_*per 13
An int是32位整数; a long是64位整数.使用哪一个取决于您期望使用的数字的大小.
int并且long是原始类型,Integer而且Long是对象.原始类型更有效,但有时您需要使用对象; 例如,Java的集合类只能使用对象,所以如果你需要一个整数列表,你必须使它成为一个List<Integer>,例如(不能使用int在List直接).
Mar*_*rty 10
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 的案例就是选择一个而不是另一个的例子。他们首先将视频观看计数器定义为
int当流行视频收到超过 2,147,483,647 次观看时溢出的计数器。由于Int计数器不能存储超过其范围的任何值,因此 YouTube 将计数器更改为 64 位变量,现在最多可以计算 9,223,372,036,854,775,807 次观看次数。了解您的数据并选择适合64 位变量的类型将比 32 位变量占用两倍的内存。