Java 基础知识-(面试题之赋值运算符)

观察下面程序段是否有错误,若有错误,请指出并说明理由。

public class test {
	public static void main(String[] args) {
		short s = 1;
		s = s + 1;    //需强制类型转换,s = (short) (s + 1);
		s += 1; 
	}
}

s = s + 1;错误。

原因分析:当short与int类型进行运算时,会自动提升为int类型,相加结果为int类型,赋值给byte类型,会造成精度损失。

s += 1;正确。

原因分析:通过+=、-=等运算符计算时,系统会自动强制类型转化,将s += 1;展开为s = (short) (s + 1);,故不会损失精度。

猜你喜欢

转载自blog.csdn.net/qq_36847713/article/details/80716083