赋值运算符
赋值运算符用于给变量赋值。
基本赋值运算符
=赋值
将右边的值赋给左边的变量。
Java
// 基本赋值
int a = 10; // 将10赋给a
String name = "张三"; // 将字符串赋给name
// 变量赋值
int b = a; // 将a的值赋给b
b = 20; // 重新赋值
// 表达式赋值
int sum = 5 + 3; // 将计算结果赋给sum
复合赋值运算符
复合赋值列表
| 运算符 | 说明 | 示例 | 等价于 |
|---|---|---|---|
| += | 加后赋值 | a += 5 | a = a + 5 |
| -= | 减后赋值 | a -= 5 | a = a - 5 |
| *= | 乘后赋值 | a *= 5 | a = a * 5 |
| /= | 除后赋值 | a /= 5 | a = a / 5 |
| %= | 取模后赋值 | a %= 5 | a = a % 5 |
+=加后赋值
Java
int a = 10;
a += 5; // a = a + 5 = 15
// 字符串拼接
String str = "Hello";
str += " World"; // str = "Hello World"
-=减后赋值
Java
int a = 10;
a -= 3; // a = a - 3 = 7
*=乘后赋值
Java
int a = 10;
a *= 3; // a = a * 3 = 30
/=除后赋值
Java
int a = 10;
a /= 3; // a = a / 3 = 3(整数除法截断)
%=取模后赋值
Java
int a = 10;
a %= 3; // a = a % 3 = 1
复合赋值自动类型转换
自动类型转换特点
复合赋值自动进行类型转换。
Java
// 基本赋值需要强转
int a = 5;
// a = a + 10.5; // 错误:double不能赋给int
a = (int)(a + 10.5); // 需要强转
// 复合赋值自动强转
int b = 5;
b += 10.5; // 自动转换为int,b = 15
// 等价于 b = (int)(b + 10.5)
类型转换示例
Java
byte x = 10;
// x = x + 5; // 错误:int不能赋给byte
x = (byte)(x + 5); // 需强转
byte y = 10;
y += 5; // 自动强转,y = 15
// 等价于 y = (byte)(y + 5)
赋值规则
左边必须是变量
Java
int a = 10;
// 正确:左边是变量
a = 20;
// 错误:左边不能是常量或表达式
// 10 = a; // 错误
// a + 5 = 20; // 错误
类型必须兼容
Java
int a;
// a = 3.14; // 错误:double不能赋给int
a = (int)3.14; // 强转后赋值
double b;
b = 10; // 正确:int自动提升为double
声明才能赋值
Java
// 正确:先声明后赋值
int a;
a = 10;
// 正确:声明并初始化
int b = 10;
// 错误:未声明就赋值
// c = 10; // 错误:c未声明
链式赋值
多变量赋同一值
Java
int a, b, c;
a = b = c = 10; // 从右向左赋值
// 等价于
c = 10;
b = c;
a = b;
链式赋值示例
Java
int x, y, z;
x = y = z = 100;
System.out.println(x); // 100
System.out.println(y); // 100
System.out.println(z); // 100
赋值运算符优先级
优先级最低
赋值运算符优先级最低,先执行右边运算。
Java
int a = 5;
int b = 10;
int result = a + b * 2;
// 计算顺序:b*2=20, a+20=25, 再赋值给result
// result = 25
复合赋值中的运算
Java
int a = 5;
int b = 3;
a += b * 2;
// 计算顺序:b*2=6, a+6=11, 再赋值给a
// a = 11
赋值与初始化
声明与初始化
Java
// 声明
int a;
// 初始化(首次赋值)
a = 10;
// 声明并初始化
int b = 20;
// 未初始化不能使用
int c;
// System.out.println(c); // 错误:未初始化
成员变量默认初始化
Java
public class Test {
int a; // 成员变量,默认值0
String str; // 成员变量,默认值null
public void method() {
int b; // 局部变量,无默认值
// System.out.println(b); // 错误:未初始化
}
}
复合赋值应用场景
循环累加
Java
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i; // 累加
}
// sum = 55
计数器
Java
int count = 0;
count++; // 自增
count += 1; // 等价于count++
字符串拼接
Java
String result = "";
for (String item : items) {
result += item; // 拼接(效率低,推荐StringBuilder)
}
状态更新
Java
int balance = 1000;
balance -= 100; // 减少
balance += 50; // 增加
要点总结
- =基本赋值:将右边值赋给左边变量
- +=加后赋值: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
- 复合赋值自动类型转换
- 赋值左边必须是已声明变量
- 赋值优先级最低
- 链式赋值从右向左执行
- 局部变量必须初始化才能使用
📝 发现内容有误?点击此处直接编辑