欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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):

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

long和float的关系

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

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

相关标签: j2se