我们可以假设Java中的默认数组值吗?假设一个int数组设置为全零?

Jos*_*dal 77 java

在实践中,我可以假设Java中的所有int数组都将以零填充吗?对于运行JVM的所有机器?

这适用于所有类型吗?炭?布尔?枚举?

这在哪里正式记录?

我已经说过教科书将int数组设置为零,但他们也建议你应该编写一个for循环来将所有值设置为零只是"更清楚".

Nik*_*bak 136

Java语言规范是查找此类信息的正确位置:

数组组件是未命名的变量,只要创建了一个新的数组对象,就会创建并初始化为默认值(第4.12.5节)

默认值本身在4.12.5节中给出.

  • 对于type 字节,默认值为零,即(byte)0的值.
  • 对于short类型,默认值为零,即(short)0的值.
  • 对于int类型,默认值为零,即0.
  • 对于long类型,默认值为零,即0L.
  • 对于float类型,默认值为正零,即0.0f.
  • 对于double类型,默认值为正零,即0.0d.
  • 对于char类型,默认值为空字符,即'\ u0000'.
  • 对于boolean类型,默认值为false.
  • 对于所有引用类型,默认值为null.


Eti*_*tel 17

是.Java中的原始类型始终为零初始化.引用也初始化为null.

  • +1和记录,这是官方规格:[变量的初始值](http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#96595) (4认同)
  • 这适用于数组值和字段,但不适用于局部变量.编译器要求您自己初始化它们. (2认同)

use*_*314 7

它应该是Java语言规范§4.12.5变量的初始值.而不是§4.5.5

"对于类型字节,默认值为零,即(字节)0的值.
对于类型short,默认值为零,即(short)0的值.
对于int类型,默认值为零,即0.
对于long类型,默认值为零,即0L.
对于float类型,默认值为正零,即0.0f.
对于double类型,默认值为正零,即0.0d.
对于char类型,默认值为空字符,即'\ u0000'.
对于类型boolean,默认值为false.
对于所有引用类型(§4.3),默认值为空值."