固定数字输入的最有效数据类型

时间:2017-04-14 12:06:08

标签: java enums custom-data-type

我有一些JSON来到我的Java程序。它有一个具有六个固定数字的特定字段:0,30,60,120,240或480.在Java中是否可以选择比短的更好的数据类型?也许通过使用某种形式的枚举或通过利用预先知道固定输入来表示位输入?

关于枚举,它们似乎是针对不同的用例而制作的,从用于枚举的Oracle Java文档看起来,如果我使用枚举,它仍将最终在内部创建一个int,所以我看不到任何用例最终在速度或记忆方面的优势。有什么我想念的吗?

我试图google但尚未得到合适的答案。

1 个答案:

答案 0 :(得分:3)

首先,观察你的例子中的数字是否遵循某种模式 - 它们是由2的幂乘以30构成的:

  • 0 - 0 - 0*30
  • 1 - 2 0 - 1*30
  • 2 - 2 1 - 2*30
  • 4 - 2 2 - 4*30
  • 8 - 2 3 - 8*30
  • 16 - 2 4 - 16*30

如果存储0到5之间的小数字(包括0和5),则可以使用查找表或使用简单的位移表达式来计算目标数字:

byte b = ... // Store the value in a variable of type "byte"
int num = b!=0 ? 30*(1<<(b-1)): 0;

注意:由于enum是一个成熟的类,它通常会使用与原始数字相同或更多的空间。