您能解释一下这种奇怪的行为吗?

public class Car {

    private int wheels;

    public Car(int wheels) {
        System.out.println("Before: " + wheels);  // prints 3 before initialisation
        this.wheels = wheels;
        System.out.println("After: " + wheels);  // prints 3

    }

    public static void main(String[] args) {
        Car car = new Car(3);
    }
}


如果运行此代码,则它将打印两次3,而不是0,然后在初始化wheels3字段之后,才打印两次。

最佳答案

因为在不使用wheels关键字引用this时,您所引用的参数显然是3。

将行更改为

System.out.println("Before: " + this.wheels);


或更改参数名称。

10-07 13:33