在以下行中,可以buffer假设用零填充?
byte buffer[] = new byte[120];
Run Code Online (Sandbox Code Playgroud)
Language-lawyer-answer完全基于Java语言规范:
数组由数组创建表达式(第 15.10 节)或数组初始值设定项(第 10.6 节)创建。
数组初始化器:
{ VariableInitializers opt ,opt }
因此,我们可以得出结论,您的表达式不是数组初始值设定项(它没有用大括号括起来)。所以我们转到数组创建:
...然后,如果出现单个 DimExpr,则创建指定长度的一维数组,并将数组的每个组件初始化为其默认值(第 4.12.5 节)。
否则,如果出现 n 个 DimExpr 表达式,则数组创建有效地执行一组深度为 n-1 的嵌套循环以创建隐含的数组数组。
最后:
...对于byte类型,默认值为0,即(byte)0的值。
所以答案是肯定的,任何 java 实现都应该用零初始化字节数组。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
a的默认值为byte0.

所有对象和数组都在构造时使用零或等效(null,false)初始化.
默认值列在JLS 4.12.5中,因此是有保证的.
从4.12.5.变量的初始值
每个类变量,实例变量或数组组件在创建时都会使用默认值进行初始化(§15.9,§15.10):
对于type字节,默认值为零,即(byte)0的值.
对于short类型,默认值为零,即(short)0的值.
对于int类型,默认值为零,即0.
对于long类型,默认值为零,即0L.
对于float类型,默认值为正零,即0.0f.
对于double类型,默认值为正零,即0.0d.
对于char类型,默认值为空字符,即'\ u0000'.
对于boolean类型,默认值为false.
对于所有引用类型(第4.3节),默认值为null.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |