为什么是“int a,b;”而当我给“a”和“b”赋值时,“int c = a-b”不起作用?

时间:2017-06-12 04:19:27

标签: java

我是Java的初学者,这似乎很容易,但我无法弄清楚我在下面做错了什么。

我创建了一个包含3个整数a,b和c的类。

public class Temp {
    private int a;
    private int b;
    private int c = a - b;

    public Temp(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    public int getC() {
        return c;
    }

然后在主类中,我创建了一个对象并给出了a和b的值。但是为什么不进行c计算(在打印结果时我得到0,如下所示)?

主:

public class Main122 {
    public static void main(String[] args) {
        Temp z = new Temp(8, 7);
        System.out.println(z.getA());
        System.out.println(z.getB());
        System.out.println(z.getC());
    }
}

结果:

8
7
0

请帮帮我,谢谢!

2 个答案:

答案 0 :(得分:2)

因为 int 的默认值为0,当您声明c时,a和b的值为0.

如果要更改c的值,您应该为其赋值:

public Temp(int a, int b) {
        this.a = a;
        this.b = b;
        this.c = this.a - this.b;
    }

答案 1 :(得分:1)

您尝试在声明点设置c值。你不应该为例如成员这样做。取而代之的是,

public class Temp {
    private int a;
    private int b;
    private int c;

    public Temp(int a, int b) {
        this.a = a;
        this.b = b;
        this.c = this.a - this.b;
    }
    ...
}

如果你保持其他一切不变,你应该

8
7
1

根据您当前的代码,您获得0,因为在您指定c = a - b时,ab都已初始化为其默认值(因此0int的默认值为0 - 0 = 0