运算规则:从右往左计算,初始变量值不变
如a=5;b=a+=a*=a;即b=a+=a=a*5;b=a+=25;b=a=a+25;b=a=30;
案例:计算b = a += a -= a *= a++;c = b *= b += b += --b;
代码演示:
package cn.tedu.test5;
public class CompoundAssignment {
public static void main(String[] args) {
byte a;
int b, c, d; a = 5;
b = a += a -= a *= a++; //a=a*(a++)=25,a=a-25=-20,a=a+(-20)=-15
System.out.println(b); //此时b=a=-15
c = b *= b += b += --b; //b=b+(--b)=-15+(-16)=-31,b=b+(-31)=-15+(-31)=-46,b=b*(-46)=-15*(-46)=690
System.out.println(c); //此时c=b=690
d = c + 2; //692
System.out.println(d > b ? a : c);
}
}
结果显示:
-15
690
-15