考虑我们正在添加2个数字
int x = 10;
int y = 20;
为什么我们在这里使用int而不是byte?我只是重温Java的基础知识。
字节数据类型仅占用1个字节,其范围为-128到127(包括端点)。
为什么我们在这里使用int虽然它占用4个字节并且其范围也很大。
使用byte x = 10;
和byte y =20;
是否可以提高性能并节省内存?
在正常的编程中,最常见的是初始化我们使用int的东西,为什么会这样呢?
更新:
更确切地说,这是我对此的解释。由于一个字节的大小为8位,因此为变量x和y分配了8位的特定空间,如果我错了,请在此纠正。 因此,如果我们声明类型为int的x和y,则为每个x和y变量分配32位空间。因此,我们的内存中的空间被占用,尽管我们使用10和20之类的小数字,这些数字类型很适合。
请更正。
答案 0 :(得分:2)
它经常使我们的代码灵活。想象一个程序,如果我输入128
而不是127
,我们会得到不准确的结果。
我同意,int
类型会带来不必要的开销,但在应用程序的宏方案中(大多数情况下)开销可以忽略不计。
答案 1 :(得分:2)
如果需要,可以使用Byte类型短裤,它比int类型短:
byte x = 10;
byte y = 20;
它没有任何问题。如果你想实现内存优化它可能是有用的,但在99.9%的时间内使用这种低级优化是没用的。
答案 2 :(得分:2)
通常这样的事情归结为计算机体系结构,并非所有处理器都有单字节的指令,本身它们通常在int类型上运行。然而,int大小可能在不同的体系结构中有所不同,使用这些事物上的字节可以归结为字节函数的二进制评估。编译器通常无法判断这些值是否会溢出,因此无法实现智能"关于优化。即使他们不会溢出,仍然需要确定他们不会。因此,它将二进制掩码所需的数据,移动它们,计算操作,再次移动它们并合并到最终的存储器位置。这就是程序员通常使用整数的原因。
答案 3 :(得分:2)
通常人们不会将字节用于小数字,因为它不会产生 如果你没有很多,那么差异就是明显的。另请注意字长 32位计算机的长度与int的长度相同,所以会发生什么 表现并不总是那么明显。
答案 4 :(得分:1)
有几个原因:
int
表示没有浮点的数字。如果我们阅读int
,我们就会知道它是什么。 byte
代表一个特殊的字节,而不是一般的小数字。如果你只是想要一个数字,int
更自我解释,例如计算东西。人们会立即认出它,这将有助于理解代码。答案 5 :(得分:1)
我们使用int
进行整数值的普通操作,我们需要一个公共的整数范围。从技术上讲,使用byte
没有问题,因为我们确定我们正在使用的数字范围,例如以下内容完全是一个有效的代码块:
for (byte b = 0; b < 127; b++) {
System.out.println(b);
}
但正如你想将上限提高到128那样,使用byte
变成了一个无限循环!因此int
在很多情况下都是enough
,或者足以应对未来的变化。
int
实际上更常见(例如作为数组索引),因此您的代码比那些地方使用byte
的代码更具可读性。
要点:
int
包含一系列在日常使用中更常见的数字int
可以轻松降低程序维护成本int
会使您的程序在许多情况下更具可读性byte
已足够且将来可以使用它。答案 6 :(得分:0)
您可能需要考虑的另一件事是JVM 2.11.1规范文档中提到的实际类型和计算类型。列于Table 2.3
文字类型boolean
byte
char
和short
的计算操作将按int
类型执行,因此您不是使用byte
代替int
减少系统上的任何“操作负载”,两者的指令周期将相同,并且需要相同的操作时间。
但是,使用byte
肯定可以保留一些非常微不足道的内存量。但是你可以牺牲它来提高程序的可读性和代码结构,同时最小化(-128到127)范围风险。