Android:短片真的需要2个字节吗?

Dmi*_*ank 5 android short

我正在尝试决定如何设计我的应用程序.

我有大约300个类的实例,就像这样:

public class ParamValue {

   protected String sValue = null;
   protected short  shValue = 0;
   protected short  mode = PARAM_VALUE_MODE_UNKNOWN;

   /*
    * ...
    */
}
Run Code Online (Sandbox Code Playgroud)

我有一组这些实例.我不知道这些短路真的需要2个字节,还是4个字节?

我需要通过AIDL传递这些对象的列表List<Parcelable>.包裹不能readShort()和writeShort(),它只能使用int.因此,在这里使用short我也必须手动将两个短裤装入一个int,包裹它,然后打开包装.看起来太突兀了.

你能否告诉我短路占用多少字节,在这里使用short而不是int是否有意义?

更新:

我为未来的读者更新了我的问题.

所以,我写了一个测试应用程序,我发现在我的情况下,绝对没有理由使用short,因为它需要相同的空间int.但是,如果我像这样定义短裤阵列:

 protected short[] myValues[2];
Run Code Online (Sandbox Code Playgroud)

然后它比int数组占用更少的空间:

 protected int[] myValues[2];
Run Code Online (Sandbox Code Playgroud)

Ern*_*ill 5

从技术上讲,在Java语言中,a short是2个字节.在JVM内部,虽然short是一个存储类型,而不是一个完整的原始数据类型等int,float或double.JVM寄存器一次总是保持4个字节; 没有半字或字节寄存器.JVM是否实际上short在对象内部存储了两个字节,或者它是否始终存储为4个字节,实际上取决于实现.

这一切都适用于"真正的"JVM.Dalvik的做法有所不同吗?不知道.