buffer
被填充为零吗?byte buffer[] = new byte[120];
buffer
被填充为零吗?byte buffer[] = new byte[120];
基于Java语言规范完整的语言律师答案:
数组是由数组创建表达式(§15.10)或数组初始化器(§10.6)创建的。
ArrayInitializer:
{ VariableInitializersopt ,opt }
因此,我们可以得出结论:您的表达式不是数组初始化器(它没有被括号包裹)。因此,我们转向数组创建:
...然后,如果出现单个DimExpr,则创建指定长度的一维数组,并将数组的每个元素初始化为其默认值(§4.12.5)。
否则,如果出现n个DimExpr表达式,则数组创建有效地执行深度为n-1的一组嵌套循环,以创建所暗示的数组数组。
最后:
...对于byte类型,默认值为零,即(byte)0的值。
因此,答案是是的,任何Java实现都应该用零初始化byte数组。
从4.12.5.变量的初始值开始
每个类变量、实例变量或数组组件在创建时都会初始化为默认值(§15.9、§15.10):
对于字节类型,默认值为零,即(byte)0的值。
对于短整型,默认值为零,即(short)0的值。
对于整型,默认值为零,即0的值。
对于长整型,默认值为零,即0L的值。
对于浮点型,默认值为正零,即0.0f的值。
对于双精度浮点型,默认值为正零,即0.0d的值。
对于字符型,默认值为空字符,即'\u0000'的值。
对于布尔型,默认值为false。
对于所有引用类型(§4.3),默认值为null。
byte b
是否可以解决这个问题? - Andreasnew
操作符。 ;) - Peter Lawreybyte buffer[] = new byte[120]; int num_bytes = myInputStream.read(buffer, 0, 120);
。在 num_bytes
之后的 buffer
中的字节是怎么初始化的? - Andreas为什么你没有尝试这个。
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