设置"短[]"的默认值元素0而不是null?

时间:2012-05-01 02:31:55

标签: java

我有一个创建列表的程序,需要任何指定的值为0.当我使用int[] humpty_dumpty = new int[20];时它运行正常但是为了优化列表的大小我将它们设置为Short[]并且现在我的程序正在破解,因为它将零作为输入(Short[] humpty_dumpty = new Short[20];正在设置默认值null)。

有没有办法将它设置为默认值零而不必遍历整个列表(我可以通过for循环来做到这一点但是想知道是否有办法使其行为类似于int)?

4 个答案:

答案 0 :(得分:9)

Short[]short[]之间存在差异。后者的元素将初始化为0,因为short是“原始”类型,不能为空。大写的Short类将初始化为null,因为它实际上只是Object包裹short值。

答案 1 :(得分:2)

您可以创建一个基本类型的数组而不是包装器

short []ar=new short[20];

答案 2 :(得分:1)

Short []根本不“优化列表的大小”,它的默认值为null。 short []可以,默认值为零。

答案 3 :(得分:1)

答案,按顺序:

1)要求优先,优化最后。不要使用稀疏数组,或尝试“智能”,除非你特别需要这样做&处理额外的代码/开销。

2)使用常见的方法(可能在实例或静态助手中)以避免重复使用公共代码。

例如。 short sparseGet(Short [] array,int i){return(array [i]!= null?array [i]:0);}

3)也许使用short []而不是Short []?大写类型不是基元,而是Value Wrapper类 - 并且作为对象引用(指针)存储到实例,因此较慢&更多内存密集型。

4)大写'Value Wrapper'类型 适用于数据库中可能包含空值的地方。例如。如果您/数据库可能没有该字段的数据,那么Person.Age理想情况下是Integer。

干杯。