复合赋值是指先执行运算符指定的运算,然后再将运算结果存储到运算符左边操作数指定的变量中。下表列出了“+=、-=、*=、/=、%=”复合赋值运算符的描述及例子。

复合赋值运算符同简单赋值运算符一样,也是双目运算符,需要两个操作数。不同的是,复合赋值运算符要先执行运算符自身要求的运算后,再将运算后的结果赋值给左边的操作数指定的变量。
复合赋值运算符“+=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相加操作,然后再将相加的结果赋值给左边的操作数指向的变量。例如下面语句:
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:在PbaseUnit6项目unit包下创建ComplexAssignSample类。代码如下:
/**
* @Title: ComplexAssignSample.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date 2019年12月1日
* @version V1.0
*/
package unit;
/**
* @ClassName: ComplexAssignSample
* @Description: 表达式与运算符(复合赋值运算符)案例1
* @author 编程训练营
* @date 2019年12月1日
*
*/
public class ComplexAssignSample {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
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 %= 8;
System.out.println("e%=3:" + e);
}
}代码结构分析
程序功能主要是演示复合赋值运算符+=、-=、*=、/=、%=用法。
程序执行结果如下图所示:
