纯手打,请区分。
明确几个概念:
+ - 其实这个加号在JAVA中有点重写的意味,比如int + int 和String + String 代表的意思是不一样的,前者是数值相加,后者是字符串内容相组合。
++ -遗传自C语言的语法,表示变量的自增,当它所处的位置不同时表示的意义也略有不同,int a = 1;syso(a++);a++代表的是先使用,后自增,打印结果为 1,syso(++a)代表的则是先自增,后使用,打印结果为2.
+++ -这涉及到运算顺序,a +++ b等同于(a++) + b,如果你将a +++ b 变为了 a + ++ b 那将等同于 a + (++b)
() -在赋值运算中,()的意义与它的数学运算中的意义一样,使括号中的运算式的优先级变为和 * / 一样,更详细JAVA运算顺序我不想去网上复制一大堆然后发给你看,毫无意义,自己主动搜索来的记忆会更深。
好了,有了以上的概念我们可以开始做题了,我们把每个式子拆解成步骤来看:
int a = 2;int b = (a++) + a * 3; -- (1)a自增,但是此处的a数值未变,改变以后的数值将在此后生效 (2)a*3=9 (3)b = 2 + 9
int c = 2;int d = c + ( c ++ * 3); -- (1)c自增 (2)d = c + (2 * 3) (3) d = 2 + 9
int e = 2;int f = (e++*3) + e; -- (1)e自增 (2) f = (2 * 3) + e (3)f = 6 + 3
int x = 2;int y = x +++ x *3; -- (1)式子等效于y = x++ + x * 3 (2)x自增 (3)y = 2 + x * 3 (4) y = 2 + 3 * 3