Java 为什么不对所有整数值使用long呢

Java 为什么不对所有整数值使用long呢,java,integer,long-integer,Java,Integer,Long Integer,在我的Java课程中,我们刚刚了解了以下每种基本数据类型: 字节 short int long 由于long数据类型包含的位最多,因此专门使用long数据类型以避免限制是否有意义 问题 仅使用long数据类型是否有特别的缺点 例如,使用int数据类型而不是long数据类型有意义吗 例如,使用int数据类型而不是long数据类型有意义吗 绝对是。 内存/磁盘使用率 只使用一两个变量,您不会看到性能的差异,但当应用程序增长时,它会提高您的应用程序速度 检查 此外,您还可以看到一些建议和内存

在我的Java课程中,我们刚刚了解了以下每种基本数据类型:

  • 字节
  • short
  • int
  • long
由于
long
数据类型包含的位最多,因此专门使用
long
数据类型以避免限制是否有意义

问题

  • 仅使用
    long
    数据类型是否有特别的缺点
  • 例如,使用
    int
    数据类型而不是
    long
    数据类型有意义吗
例如,使用
int
数据类型而不是
long
数据类型有意义吗

绝对是。


内存/磁盘使用率 只使用一两个变量,您不会看到性能的差异,但当应用程序增长时,它会提高您的应用程序速度

检查

此外,您还可以看到一些建议和内存使用情况:

type    memory usage    recommended for
------- --------------- ---------------------------------------------------
byte    8-bit signed    The byte data type can be useful for saving memory in large arrays, where the memory savings actually matters.
short   16-bit signed   same as byte
int     32-bit signed   
long    64-bit          Use this data type when you need a range of values wider than those provided by int
float                   Use a float (instead of double) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency.
字节

字节数据类型是一个8位有符号2的补码整数。它的最小值为-128,最大值为127(含)字节数据类型对于在大型阵列中节省内存非常有用,而实际上节省内存很重要。

short

短数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省实际上很重要的情况下,您可以使用short在大型阵列中节省内存

int

默认情况下,int数据类型是一个32位有符号2的补码整数,其最小值为-2,最大值为2。在Java SE 8及更高版本中,可以使用int数据类型表示无符号32位整数,该整数的最小值为0,最大值为2-1

long

长数据类型是一个64位2的补码整数。带符号的long的最小值为-2⁶³,最大值为2⁶³-1. 在Java SE 8及更高版本中,您可以使用long数据类型表示无符号64位long,其最小值为0,最大值为2⁶⁴-1. 当需要的值范围大于int提供的值范围时,请使用此数据类型

float

浮点数据类型是单精度的32位IEEE 754浮点。它的值范围超出了本文讨论的范围,但在Java语言规范的浮点类型、格式和值部分中有详细说明。与byte和short的建议一样,如果需要在大量浮点数数组中保存内存,请使用浮点(而不是双精度)。此数据类型不得用于精确值,如货币。


代码可读性 此外,它将澄清您的想法和代码,比如说,您有一个代表对象ID的变量,该对象ID永远不会使用小数,因此,如果您在代码中看到:

int id;
您现在将确定此ID的外观,否则

double id;
习惯

此外,如果您看到:

int quantity;
double price;
您将知道,
数量
不允许小数(仅允许完整对象),但价格可以。。。这使您的工作(以及其他程序员将阅读您的代码)更容易。

除了范围(可以存储在任何特定数据类型中的最小值和最大值)之外,还有另一个方面,即变量的大小

您还必须注意以下几点:

byte = 1 byte
short = 2 bytes
int = 4 bytes
long = 8 bytes
因此,使用
long
变量意味着您正在为其分配
8字节的内存

大概

long var=1000L

不显示内存的有效使用。如果这些天你得到了GBs的RAM,这并不意味着我们应该浪费它


我想说的简单一点是,内存使用效率越高,应用程序的运行速度就越快。

内存需求和速度方面的性能将使
变得昂贵

然而,
int
还有另一个优点:太容易与
int
子表达式混合,并且在组合错误的操作时可能会丢失长信息。50向左移动一点,实际上是做18,以此类推。仅使用带有
L
后缀的数字将是一种衡量标准。另外,
long
还可以作为
int
乘法和其他类似操作的溢出捕获,其中长时间检测溢出是您所能做的一切


请注意,对于
int
,byte和short的“所有”操作都会传播到
int

ahhh,因此唯一的好处是提高效率/速度?为什么速度/效率还不够?在其他以对象为中心的语言中,基元类型的存在已经是一个纯粹的速度/效率指标。不要忘记内存占用。尤其是在使用矩阵等大数据结构时。是的。。回到过去,当内存不足时,您总是会评估使用哪种数据类型。当涉及到内存有限的嵌入式编程时,这仍然非常重要…@robertosly你的思维集中在由大处理器/ram内存运行的小应用程序中。。。那不是真实的生活。。。。如果你开始编程,你会得到越来越大的应用程序和过时的机器,你会记得这个问题,速度、效率和RAM/磁盘空间过去是很昂贵的,所以我们过去常常担心这些事情。现在在服务器和桌面上,我看不出有什么意义。这在移动应用程序中可能仍然很重要。知道在过去,这些数据类型更“重要”,这很酷。并不是说现在a天的数据类型不是si