0

我知道这是一个 n00b 问题,但我想定义一个变量,其值介于JAVA0100JAVA 之间。我可以使用 INT 或 BYTE 作为数据类型——但哪一种是最好的。为什么?(好处?)

4

6 回答 6

1

要么 要么intbyte用于存储该范围内的数字。

哪个最好取决于您的目标是什么。

  • 如果您需要将大量这些数字存储在一个数组中,那么 abyte[]将比int[]具有相同长度的 a 占用更少的空间。

  • (令人惊讶的是)由于 JVM 执行堆栈帧/对象帧布局的方式,byte变量占用与 ... 相同的空间量。int

  • 如果您正在使用这些值进行大量算术等运算,则intbyte. 在 Java 中,算术和按位运算会自动将操作数提升为int,因此当您需要分配回 a 时,byte您需要使用(byte)类型转换。

于 2012-06-27T14:19:21.250 回答
0

从技术上讲,两者都不合适——如果您需要存储小数部分,则需要一个浮点数。

我个人认为,除非您实际上遇到资源受限的问题(嵌入式系统、大数据等),否则如果您使用 int. 良好的风格是关于人们易读的,因此表明您正在使用整数可能比过早优化并因此迫使您的代码的未来维护者(包括您自己)推测该变量的真实性质更有意义。

于 2012-06-27T14:15:27.323 回答
0

使用字节数据类型存储 -128 到 127 之间的值

于 2012-06-27T14:16:31.567 回答
0

我认为由于您使用0.00了小数,这意味着您希望允许小数。最好的方法是使用浮点类型:doublefloat.

但是,如果您不需要小数,并且数字始终是整数,则可以使用intbyte。Byte 可以容纳高达 +127 或低至 -128 的任何内容,并且占用的空间比 int 少得多。

在您的系统上使用 32 位整数,您byte将占用 1/4 的空间!缺点是在对字节进行算术运算时必须小心——它们可能会溢出,如果超出范围会导致意外结果。
如果您正在使用基本的 IO 功能,例如创建声音或读取旧文件格式,那么字节是无价的。但要注意符号约定:负数设置了高位。但是,在进行普通数值计算时,我总是使用 int,因为它可以在需要时轻松扩展到更大的值,并且 32 位 cpu 确实具有最小的速度成本。唯一的问题是,如果您要存储大量它们。

于 2012-06-27T14:17:04.343 回答
0

引用原始数据类型

byte: byte 数据类型是一个 8 位有符号二进制补码整数。它的最小值为 -128,最大值为 127(含)。byte 数据类型可用于在大型数组中节省内存,其中内存节省实际上很重要。它们也可以用来代替 int ,它们的限制有助于澄清您的代码;变量的范围有限这一事实可以作为一种文档形式。

int: int 数据类型是一个 32 位有符号二进制补码整数。它的最小值为 -2,147,483,648,最大值为 2,147,483,647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上述)选择其他类型。这种数据类型很可能对于您的程序将使用的数字足够大,但如果您需要更广泛的值,请改用 long。

于 2012-06-27T14:20:57.193 回答
0

嗯,这取决于你在做什么......就像我说的那样使用 int ,因为它是声明整数的标准方式。但是,如果您做一些需要内存优化的特定操作,那么在这种情况下,字节可能会更好。

于 2012-06-27T14:29:26.547 回答