摘自: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
为什么?
摘自: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
为什么?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
要详细解答这个问题,可以看《Java语言规范》或者《深入Java虚拟机》。
我来个简单点儿的吧:
由于括号的存在,在这个表达式中,我们需要计算
m = ① + ②
的值。(这个就不解释了,括号的优先级最高)① 的值:很简单就是
a++
,注意 此时a++
的值是5
,而a
的值是6
。(有疑问吗?)① 的值: 5
a++
的值:5a
的值: 6② 的值:在第一布中, 我们求得了
a
的值6
,因此, ② 的值就是6
,注意此时a
的值,是7
。(有疑问吗?)② 的值: 6
a++
的值:6a
的值: 7最后
m
的值,也就是 ① + ② 的值,5+6
=11
。m
的值: 11a
的值: 7