首页 > 开发 > JAVA > 正文

Java ++ 的疑惑

2017-09-07 09:24:10  来源:网友分享

摘自:http://hi.baidu.com/list263/item/649a1686e4f1ebebe596e073

例子1:
int a= 1;
a = a++;
System.out.println(a); // 等于1

例子2:
int a=5;
int m=(a++)+(a++);
System.out.println(a + ", " + m); // 等于7, 11

为什么?

解决方案

要详细解答这个问题,可以看《Java语言规范》或者《深入Java虚拟机》。

我来个简单点儿的吧:

int m=(a++)+(a++);       |      |       ①  +  ②       |      |       └─────┘          |          m

由于括号的存在,在这个表达式中,我们需要计算 m = ① + ② 的值。(这个就不解释了,括号的优先级最高)

  • ① 的值:很简单就是 a++注意 此时 a++ 的值是 5,而 a 的值是 6。(有疑问吗?)

    • ① 的值: 5

    • a++的值:5

    • a 的值: 6

  • ② 的值:在第一布中, 我们求得了 a 的值 6,因此, ② 的值就是 6,注意此时 a 的值,是 7。(有疑问吗?)

    • ② 的值: 6

    • a++的值:6

    • a 的值: 7

  • 最后 m 的值,也就是 ① + ② 的值,5+6 = 11

    • m 的值: 11

    • a 的值: 7