在java中使用之前初始化变量

taw*_*eed -3 java

我已经玩了这段代码了一段时间,它让我感到困惑,为什么这个方法调用似乎返回一个数字虽然它最初没有设置为0

public class MainProg {
    public static void main(String[] args) {
        FixedCapacitySizeOfStrings s = new FixedCapacitySizeOfStrings(3);
        System.out.println("(" + s.size() + " left on stack)");

    }
}
Run Code Online (Sandbox Code Playgroud)

这是API代码

public class FixedCapacitySizeOfStrings {
    private String[] a;
    private int N;  

    public FixedCapacitySizeOfStrings(int cap) {
        a = new String[cap];
    }

    public boolean isEmpty() {
        return N == 0;
    }

    public int size() {
        return N;  //why is this line doing the right thing?? N was never initialized to 0
    }

    public void push(String item) {
        a[N++] = item;
    }

    public String pop() {
        return a[--N];
    }
}
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 5

原始实例变量默认初始化为0.这包括int,long,double,float,short,bytechar.(并且所有非原始实例变量都被初始化为null)

请注意,它仅与实例变量(字段)有关 - 未初始化局部变量.