有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基本类变量的java算术运算

找不到对正在发生的事情的明确描述,所以我想我会把这件事告诉社区

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'

}}

“sum”变量是空的,是因为在实例化期间整数i和j都是空的吗

提前谢谢


共 (3) 个答案

  1. # 1 楼答案

    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
    

    注意,Temp对象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()
    
        }
    }
    
  2. # 2 楼答案

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

    数字数据字段设置为零

    字符字段设置为Unicode \u0000

    布尔字段设置为false

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

  3. # 3 楼答案

    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类中创建一个getter方法,而不是变量sum

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

    然后要打印总数:

    System.out.println(obj.getSum());