为什么Java会为您初始化变量?

为什么Java会为您初始化变量?,java,Java,我正在测试上面的代码,为什么Java会为您初始化这些值?我认为如果我不初始化我的变量,它应该抛出编译错误。另外,我应该如何处理行float[]value=newfloat[2*3]如果要将它们全部初始化为0.0?基本数据类型数组的元素会自动初始化为默认值:0.0表示float,false表示boolean,当数组未显式初始化时。对于value,该数组的元素应该已经初始化为0.0,因为这是默认值。静态变量和实例变量,数组的元素初始化为默认值(0,false,'\0',null等)。默认情况下,不初

我正在测试上面的代码,为什么Java会为您初始化这些值?我认为如果我不初始化我的变量,它应该抛出编译错误。另外,我应该如何处理行
float[]value=newfloat[2*3]
如果要将它们全部初始化为0.0?

基本数据类型数组的元素会自动初始化为默认值:
0.0
表示
float
false
表示
boolean
,当数组未显式初始化时。对于
value
,该数组的元素应该已经初始化为
0.0
,因为这是默认值。

静态变量和实例变量,数组的元素初始化为默认值(0,false,
'\0'
,null等)。默认情况下,不初始化局部变量

在您的代码中,只有数组元素没有被显式初始化-编译器将很难确定您尝试使用的每个数组元素是否都已初始化。例如,如果数组来自一个参数,您希望发生什么

根据Java语言规范:

然后,如果出现一个单二聚体,将创建一个指定长度的一维数组,并将数组的每个组件初始化为其默认值(§4.12.5)


(这就是您所处的情况-这里的DimExpr是您的3*2表达式。)

Per,并且由于浮点的默认值是0.0,您的整个浮点[]已经被初始化为0.0。你不必做任何其他事情。这就是它为值[3]打印0.0的原因。

您的浮点数组将隐式初始化为0.0。如果您试图在方法中使用未初始化的变量,但对象状态总是给定一个默认值(除非您选择覆盖这些默认值),编译器将发出警告。您可以对照Java语言规范检查这些默认值。

如果要初始化float[]value=new float[2*3];再一次为了安全起见,我该怎么做?@user133466:你说的“为了安全”是什么意思?它将自动填充每个等于0的元素。如果要将其初始化为其他值,可以显式地执行此操作。好的,我要将其初始化为其他值(将所有值都设置为1)。如果不使用{}@user133466:
数组,我该怎么做呢?正如科林所说,fill(values,1)
,或者使用
for
循环并显式执行。我不是downvoter,但局部变量不会自动初始化为默认值。这是值得澄清的,依我看。@Jon-你说得对,我指的是数组的元素,因为这就是问题所在,但我应该澄清这一点。答案已编辑。
public class test {
    public static void main(String[] args) {
        int MAX = 5;
        boolean bit[] = new boolean[MAX];
        float[] value = new float[2*3];
        int[] number = {10, 9, 8, 7, 6};
        System.out.println(bit[0]); // prints “false”
        System.out.println(value[3]);   // prints “0.0”
        System.out.println(number[1]);  // prints “9”
        }
    }