在下面的行中,可以buffer
假设用零填充?
byte buffer[] = new byte[120];
Language-lawyer-answer 完全基于 Java 语言规范:
数组由数组创建表达式(第 15.10 节)或数组初始值设定项(第 10.6 节)创建。
数组初始化器:
{ VariableInitializers opt ,opt }
因此,我们可以得出结论,您的表达式不是数组初始值设定项(它没有用大括号括起来)。所以我们开始创建数组:
...然后,如果出现单个 DimExpr,则创建一个指定长度的一维数组,并将数组的每个组件初始化为其默认值(第 4.12.5 节)。
否则,如果出现 n 个 DimExpr 表达式,则数组创建有效地执行一组深度为 n-1 的嵌套循环以创建数组的隐含数组。
最后:
...对于字节类型,默认值为0,即(byte)0的值。
所以答案是肯定的,java 的任何实现都应该用零初始化字节数组。
所有对象和数组在构造时都用零或等效项(null,false)初始化。
JLS 4.12.5中列出了默认值,因此得到了保证。
从 4.12.5 开始。变量的初始值
每个类变量、实例变量或数组组件在创建时都使用默认值进行初始化(第 15.9 节、第 15.10 节):
对于 byte 类型,默认值为 0,即 (byte)0 的值。
对于short类型,默认值为0,即(short)0的值。
对于 int 类型,默认值为 0,即 0。
对于 long 类型,默认值为 0,即 0L。
对于 float 类型,默认值为正零,即 0.0f。
对于 double 类型,默认值为正零,即 0.0d。
对于 char 类型,默认值为空字符,即 '\u0000'。
对于 boolean 类型,默认值为 false。
对于所有引用类型(第 4.3 节),默认值为 null。
为什么你不试试这个。
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