java中“+=“与“=+“的区别

tech2026-03-03  1

“+=”和“=+”的区别,看例子

第一个:

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他妈的不是基本类型!!!

最新回复(0)