在以下行中,假设buffer
可以用零填充吗?
byte buffer[] = new byte[120];
答案 0 :(得分:7)
答案 1 :(得分:6)
所有对象和数组在构造时都用零或等效(null,false)初始化。
默认值列在JLS 4.12.5中,因此可以保证。
FROM 4.12.5。变量的初始值
每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化(§15.9,§15.10):
对于type byte,默认值为零,即值 (字节)0
对于type short,默认值为零,即值为 (短)0
对于int类型,默认值为零,即0。
对于long类型,默认值为零,即0L。
对于float类型,默认值为正零,即0.0f。
对于double类型,默认值为正零,即0.0d。
对于char类型,默认值为空字符,即 '\ u0000的'。
对于类型boolean,默认值为false。
对于所有引用类型(§4.3),默认值为null。
答案 2 :(得分:4)
语言 - 律师 - 完全基于Java语言规范的答案:
数组由数组创建表达式(第15.10节)或数组初始值设定项(第10.6节)创建。
ArrayInitializer :
{ VariableInitializers opt,opt }
因此,我们可以得出结论,你的表达式不是一个数组初始值设定项(它没有用大括号括起来)。所以我们转向数组创建:
15.10.1 Run-Time Evaluation of Array Creation Expressions
...然后,如果出现单个DimExpr,则会创建一个指定长度的一维数组,并且将数组的每个组件初始化为其默认值(§4.12.5)。强>
否则,如果出现n个DimExpr表达式,则数组创建有效地执行一组深度为n-1的嵌套循环,以创建隐含的数组数组。
最后:
4.12.5. Initial Values of Variables
...对于类型字节,默认值为零,即(byte)0的值。
所以答案是是任何java的实现都应该用零初始化字节数组。
答案 3 :(得分:1)
为什么你没试过这个。
byte buffer[] = new byte[120];
for (int i = 0; i < buffer.length; i++)
{
System.out.println(buffer[i]);
}
请找参考资料
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html