下面的程序输出为什么是25?

时间:2018-07-29 07:49:50

标签: java

我在解释下面的程序时做了很多尝试,但没有说明问题。

class Example{
static int a = 9;
public static  void main(String...args) {
    System.out.println(a + 3 + 3 * m1() + a* m1() + 1 + a);
}
static int m1(){
    return (a =2);
}}

2 个答案:

答案 0 :(得分:2)

您必须按操作顺序分组,并认为a是静态字段;因此,一旦更新,它将保持更新状态(为2),直到有其他修改为止:

9 + 3 + (3 * 2) + (2 * 2) + 1 + 2  
12 + 6 + 4 + 3  
18 + 7  
25  

答案 1 :(得分:1)

您可以看到运算符优先级顺序here

执行程序时,它将从左到右开始操作。调用m1()时,您分配a=2并返回此值。所以在a = 2之后,您的方程式如下:

9 + 3 + 3 * 2 + 2 * 2 + 1 + 2
9 + 3 + 6 + 4 + 1 + 2
25