java中“+=“与“=+“的区别
程序员文章站
2022-05-12 14:53:43
...
“+=”和“=+”的区别,看例子
第一个:
float m=1.0f;
int n=1;
// Eclipse会检查出错误,Type mismatch: cannot convert from float to int
// System.out.println(n=n+m);
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=m+n);
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;
//The operator += is undefined for the argument type(s) int, String
// System.out.println(n+=m);
//Type mismatch: cannot convert from String to int
// System.out.println(n=n+m);
System.out.println(m+=n);
System.out.println(m=m+n);
前两个注释的,都有错
后两个都没问题!
为什么第2个不强制转了?因为String他妈的不是基本类型!!!
上一篇: node.js中常用的fs文件系统有哪些
下一篇: Android 日志错误收集