+/++/+= 运算符用了这么多年一直很混乱,甚至用的时候不生效直接代码替代,现在有时间整理一下方便后续查看
运算符:
运算符 | 本质作用 | 操作数数量 | 是否修改原变量 | 支持的类型 | 典型场景 |
---|---|---|---|---|---|
+ |
加法 / 拼接(返回新结果) | 2 个 | 不修改 | 数值、字符串、自定义类型 | 计算和、拼接内容(不修改原变量) |
++ |
自增 1(返回新 / 旧值) | 1 个 | 修改 | 仅数值类型(整数、浮点) | 循环计数、简单自增 |
+= |
加 / 拼接后赋值(缩写形式) | 2 个 | 修改 | 数值、字符串、自定义类型(Kotlin) | 更新变量值(加 n 或拼接内容) |
- +是加法和拼接
- ++数值加1
- +=加法和拼接后赋值
1.+
操作符处理加法和拼接的效果
+
操作符只做增加和拼接操作,不修改原有变量
- +操作数据只做加的操作 不改变原有变量
- +操作字符做拼接操作 不改变原有变量
go
var a="a"
var b=a+"bc"
println("result="+a)
println("result="+b)
var c=0
var d=c+1
println("result="+c)
println("result="+d)
结果:
result=a
result=abc
result=0
result=1
2.++
自增操作符数值自增1
- count++ 后置自增 先返回变量当前值,再让变量自增 1
- ++count 前置自增 先让变量自增 1,再返回自增后的值
go
var a=0
var b=0
println("执行前result="+(a++))
println("执行后result="+a)
println("执行前result="+(++b))
println("执行后result="+b)
// 结果
执行前result=0
执行后result=1
执行前result=1
执行后result=1
总结:
++在前先返回再++,++在后先++再返回
3.+=
数值增加和拼接后赋值
+=
:将修改后的结果赋值给原变量
注意:
kotlin中 += 不能作为结果返回
- 操作数值
操作数值时: 和前置自增
一致 先++再返回
csharp
int a=0;
System.out.println("执行前result="+(a+=1));
System.out.println("执行后result="+(a));
//结果
执行前result=1
执行后result=1
- 操作拼接
ini
String a="a";
String b=(a+="b");
System.out.println("执行后result="+(a));
System.out.println("执行后result="+(b));
//结果
执行后result=ab
执行后result=ab
总结
+
只增加不修改原对象+=
增加/拼接赋值给原数据++count
先自增再返回count++
先返回再自增+=
在Kotlin 中不能做结果返回