原始 class 变量的算术运算

Arithmetic operation on primitive class variables

找不到对正在发生的事情的明确描述,所以我想将其提交给社区。

public class Temp {
static int i;
int j;
int sum = i+j;
}


public class Main{
public static void main(String[] args){

Temp obj = new Temp();
obj.i = 1;
obj.j = 2;
System.out.println(obj.sum); //returns '0'

}}

是不是实例化时整数i和j都为空,所以'sum'变量为空?

提前致谢!

Is it because both integers i and j were empty during instantiation that the 'sum' variable is empty?

是的,i+j是在对象实例化的时候赋值给'sum'的。默认情况下 java 将 0 分配给 int 值,当您不分配值时。

您需要通过直接为其赋值来更新 sum 变量。

obj.i = 1;
obj.j = 2;
obj.sum = obj.i + obj.j.

解决方法是在您的 Temp class 中创建一个 getter 方法,而不是变量 sum:

public class Temp {

    static int i;
    int j;

    public int getSum() {
        return i + j;
    }
}

然后打印总和:

System.out.println(obj.getSum());
Temp obj = new Temp(); // creates an instance of object type Temp

这里,数据成员ijsum初始化为0

obj.i = 1; // assigns value of Temp data member, i to 1
obj.j = 2; // assigns value of Temp data member, j to 2

注意临时对象obj的数据成员sum的值仍然是0
要制作,sum = i + j,需要在初始化ij时,将其初始化为i + j

只需编写obj.setSum()方法来设置sum的值,然后obj.getSum()获取更新后的值。

public class Temp {
    static int i;
    int j;
    int sum = i+j;

    public void setSum(){
        sum = i + j;
    }
    public int getSum(){
        return sum;
    }

}


public class Main{
    public static void main(String[] args){

    Temp obj = new Temp();
    obj.i = 1;
    obj.j = 2;
    obj.setSum();
    System.out.println(obj.sum); //OR obj.getSum()

    }
}

当您创建另一个将由 main 方法使用的 class 时

数字数据字段设置为零

字符字段设置为 Unicode \u0000

布尔字段设置为 false

作为对象引用的字段设置为 null 或(空),例如 String data fields