赋值运算符
使用 = 等号来进行赋值运算,= 也叫赋值运算符,用于对变量进行赋值。
赋值运算符除了将右边的表达式计算结果赋给左边变量以外,还有一个特点:赋值表达式本身也有值,它的值就是赋值完成后左边变量的值。
int a = 12;
int b;
System.out.println(b = a * 3); // 输出 36,赋值表达式 b = a * 3 本身的值为 36
System.out.println(b); // 输出 36Code language: JavaScript (javascript)
连续赋值
可以将多个变量连续赋同一个值:
int a, b, c;
a = b = c = 100; // a、b、c 的值都为 100Code language: JavaScript (javascript)
扩展赋值运算符
在赋值运算符 = 前加上其他运算符,即为扩展赋值运算符:
| 运算符 | 说明 | 等价形式 |
|---|---|---|
+= | 加后赋值 | a += b 等价于 a = (类型)(a + b) |
-= | 减后赋值 | a -= b 等价于 a = (类型)(a - b) |
*= | 乘后赋值 | a *= b 等价于 a = (类型)(a * b) |
/= | 除后赋值 | a /= b 等价于 a = (类型)(a / b) |
%= | 取余后赋值 | a %= b 等价于 a = (类型)(a % b) |
注意:扩展赋值运算符自带强制类型转换,这是它与普通赋值运算的重要区别。
short s = 5;
s += 5; // 正确,扩展赋值运算符自动进行强制类型转换
// s = s + 5; // 编译错误,s + 5 运算时 s 自动提升为 int,结果是 int 类型,不能直接赋给 shortCode language: JavaScript (javascript)
完整示例代码
public static void main(String[] args) {
// 赋值表达式本身有值
// int a;
// System.out.println(a = 13 * 2); // 输出 26
// System.out.println(a); // 输出 26
// 连续赋值
// int a, b, c;
// a = b = c = 100;
// 扩展赋值运算符
// int x = 100;
// x %= 5;
// System.out.println(x); // 输出 0
// short 类型与扩展赋值
// short s = 5;
// s = (short)(s + 5); // 需要显式强制类型转换
// System.out.println(s);
short s = 5;
s += 5; // 扩展赋值运算符自动进行强制类型转换
System.out.println(s); // 输出 10
}Code language: JavaScript (javascript)
总结:扩展赋值运算符(
+=、-=、*=、/=、%=)不仅写法简洁,还会自动进行强制类型转换,避免了byte、short、char参与运算后需手动强转的麻烦。