我知道这是一个n00b问题,但我想在JAVA中定义一个值介于0
和100
之间的变量。我可以使用INT或BYTE作为数据类型 - 但哪一个最适合使用。为什么?(福利?)
答案 0 :(得分:1)
int
或byte
可用于存储该范围内的数字。
哪个最好取决于你的目标。
如果您需要在数组中存储大量这些数字,那么byte[]
占用的空间将小于int[]
的相同长度。
(令人惊讶的是)由于JVM执行堆栈帧/对象框架布局的方式,byte
变量占用的空间量与int
相同。
如果您使用这些值进行大量算术运算,那么int
比byte
更方便。在Java中,算术和按位运算会自动将操作数提升为int
,因此当您需要分配回byte
时,需要使用(byte)
类型转换。
答案 1 :(得分:0)
从技术上讲,两者都不合适 - 如果你需要存储小数部分,你需要一个浮点数。
我个人认为,除非您实际涉及资源受限的问题(嵌入式系统,大数据等),否则如果使用int,您的代码会更加清晰。良好的风格是关于人们易读的,所以表明你使用整数可能比过早优化更有意义,从而迫使你的代码(包括你自己)的未来维护者推测 true 该变量的性质。
答案 2 :(得分:0)
使用byte数据类型存储介于-128到127之间的值
答案 3 :(得分:0)
我认为既然你已经使用了带有小数的0.00
,这意味着你想要允许小数。
执行此操作的最佳方法是使用浮点类型:double
或float
。
但是,如果您不需要小数,并且数字始终是整数,则可以使用int
或byte
。字节可以容纳高达+127或低至-128的任何值,并占用比int更少的空间。
在您的系统上使用32位整数,byte
将占用1/4的空间!
缺点是在对字节进行算术运算时必须小心 - 它们可能会溢出,如果超出范围会导致意外结果。
如果您正在使用基本IO功能,如创建声音或读取旧文件格式,则byte非常有用。但请注意符号约定:否定具有高位设置。然而,在进行正常的数值计算时,我总是使用int,因为它允许在需要时轻松扩展到更大的值,而32位cpus实际上是最小的速度成本。唯一的问题是如果你要存储大量的。
答案 4 :(得分:0)
byte:字节数据类型是一个8位带符号的二进制补码整数。它的最小值为-128,最大值为127(含)。字节数据类型可以用于在大型数组中保存内存,其中节省的内存实际上很重要。他们也可以用来代替int,其限制有助于澄清你的代码;变量范围有限的事实可以作为一种文档形式。
int: int数据类型是32位带符号的二进制补码整数。它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他内容。此数据类型很可能足以容纳您的程序将使用的数字,但如果您需要更宽范围的值,请使用long。
答案 5 :(得分:0)
这取决于你正在做什么......出乎意料的是,我会说使用int,因为它是声明整数的标准方法。但是,如果你做了一些需要内存优化的特定内容,那么在这种情况下,字节可能会更好。