为什么以下代码不为变量创建新值?

Ant*_*man 2 java

class Cube{
    int side;
    int area = side * side;
}

public class Chronos{
    public static void main(String[]args) {
        Cube a = new Cube();
        a.side = 2;
        System.out.println(a.area);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么它输出"0"而不是将给定变量乘以 a.side=2它自己并给出a.area=4.我的思维过程是,它会看到打印的命令a.area,检查Cube并看到它a.side本身已经确定的倍增.

Zet*_*uli 5

因为

int area=side*side 
Run Code Online (Sandbox Code Playgroud)

初始化多维数据集对象时发生,因此设置为0*0 = 0;

要改变这个,你必须创建一个方法,即setSide或getArea,并在那里进行计算.即(根本不需要使用区域变量)

public int getArea(){
   return side*side;
}
Run Code Online (Sandbox Code Playgroud)