复合赋值是指先执行运算符指定的运算,然后再将运算结果存储到运算符左边操作数指定的变量中。下表列出了“+=、-=、*=、/=、%=”复合赋值运算符的描述及例子。
复合赋值运算符同简单赋值运算符一样,也是双目运算符,需要两个操作数。不同的是,复合赋值运算符要先执行运算符自身要求的运算后,再将运算后的结果赋值给左边的操作数指定的变量。
复合赋值运算符“+=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相加操作,然后再将相加的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 10;
a += 20;
此时,变量a等于30,其过程是变量a先与数值20相加,因为变量a的值是10,因此与数值20相加的结果是30,再将30赋值给变量a,此时变量a的值为30。
复合赋值运算符“-=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相减操作,然后再将相减的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 20;
a -= 18;
此时,变量a等于2,其过程是变量a先与数值18相减,因为变量a的值是20,因此与数值18相减的结果是2,再将2赋值给变量a,此时变量a的值为2。
复合赋值运算符“*=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相乘操作,然后再将相乘的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 20;
a *= 3;
此时,变量a等于60,其过程是变量a先与数值3相乘,因为变量a的值是20,因此与数值3相减的结果是60,再将60赋值给变量a,此时变量a的值为60。
复合赋值运算符“/=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相除操作,然后再将相除的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 15;
a /= 3;
此时,变量a等于5,其过程是变量a先与数值3相除,因为变量a的值是15,因此与数值3相除的结果是5,再将5赋值给变量a,此时变量a的值为5。
复合赋值运算符“%=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行取余操作,然后再将取余的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 15;
a %= 8;
此时,变量a等于7,其过程是变量a先与数值8执行取余运算,因为变量a的值是15,因此与数值8取余运算的结果是7,再将7赋值给变量a,此时变量a的值为7。
示例1:复合赋值运算符
在D盘Java目录下,新建“ComplexAssignSample.java”文件。用记事本打开“ComplexAssignSample.java”文件,输入以下代码:
public class ComplexAssignSample {
public static void main(String args[])
{
//+=运算符示例,声明变量a且初始化为10
int a = 10;
a+= 20;
System.out.println("a += 20:" + a);
//-=运算符示例,声明变量b且初始化为20
int b = 20;
b -= 18;
System.out.println("b-=18:" + b);
//*=运算符示例,声明变量c且初始化为20
int c = 20;
c *= 3;
System.out.println("c*=3:" + c);
// /=运算符示例,声明变量d且初始化为15
int d = 15;
d /= 3;
System.out.println("d/=3:" + d);
// %=运算符示例,声明变量e且初始化为15
int e = 15;
e %= 3;
System.out.println("e%=3:" + e);
}
}代码结构分析
程序功能主要是演示复合赋值运算符+=、-=、*=、/=、%=用法。
程序语句都很简单,不再细说。
编译“ComplexAssignSample.java”文件,在命令行窗口输入“javac ComplexAssignSample.java”并执行命令,编译通过后,在命令行窗口输入“java ComplexAssignSample”运行Java程序,命令行窗口显示如下信息:

图 6-6 复合运算符示例执行结果
■ 知识点拨
复合赋值运算符是先运算再赋值,复合赋值运算符右边操作数是表达式时,先计算表达式的值,其计算结果再参与运算符的运算,最后将最终结果赋值给左边操作数指定的变量。
■ 思考与练习
(1)下列语句中变量a的结果为()
int a = 15;
a += 10;
a*=2
A.27
B.50
C.25
D.35
(2)下列语句中变量b的结果为()
int b = 15
b %= 8
A.8
B.7
C.9
D.10
(3)下列语句中变量c的结果为()
int c = 3;
c += 3*2;
A. 6
B. 8
C. 9
D. 12