全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-09 5 分钟 ✍️ juanwangdev

赋值运算符

赋值运算符用于给变量赋值。

基本赋值运算符

=赋值

将右边的值赋给左边的变量。

Java
// 基本赋值
int a = 10;        // 将10赋给a
String name = "张三";  // 将字符串赋给name

// 变量赋值
int b = a;         // 将a的值赋给b
b = 20;            // 重新赋值

// 表达式赋值
int sum = 5 + 3;   // 将计算结果赋给sum

复合赋值运算符

复合赋值列表

运算符说明示例等价于
+=加后赋值a += 5a = a + 5
-=减后赋值a -= 5a = a - 5
*=乘后赋值a *= 5a = a * 5
/=除后赋值a /= 5a = a / 5
%=取模后赋值a %= 5a = 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
  • 复合赋值自动类型转换
  • 赋值左边必须是已声明变量
  • 赋值优先级最低
  • 链式赋值从右向左执行
  • 局部变量必须初始化才能使用

📝 发现内容有误?点击此处直接编辑

← 上一篇 算术运算符
下一篇 → 逻辑运算符
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库