“+=”和“=+”的区别,看例子
第一个:
float m
=1.0f;
int n
=1;
System
.out
.println(n
+=m
);
第一个输出报错(已经注释,n是int,m是float,隐式转换不可行) 第二个输出不报错(+=会强制转换)
第二个
short m
=1;
int n
=1;
System
.out
.println(n
=n
+m
);
System
.out
.println(n
+=m
);
都不报错(都是有低到高,可以隐式转)
第三个
short m
=1;
int n
=1;
System
.out
.println(m
+=n
);
第一个输出报错(已经注释,m是short,n是int,隐式转换不行) 第二个输出不报错(+=强制转了)
结论:在java中高类型不能隐式赋值为低类型。想转,必须强转
类型高低(图来源how2j):
long和float的关系
float更高级的原因
https://blog.csdn.net/weixin_44296929/article/details/106902749
第四个
String m
="1";
int n
=1;
System
.out
.println(m
+=n
);
System
.out
.println(m
=m
+n
);
前两个注释的,都有错 后两个都没问题! 为什么第2个不强制转了?因为String他妈的不是基本类型!!!