short s=5;s=s-2编译不通过原因
在s=s-2中,等号的右边是一个表达式,根据Java自动类型转换原则,s-2会自动地转换为int类型,而将一个int类型的数据赋值给一个short类型的变量,编译自然会报错。而另外一种形式则可以编译通过,即s-=2.因为-=是一个运算符,所以2是short类型,该式可以等价地视为s=(short)(s-2);依次编译通过。

基本数据类型转换:
各数据类型按容量大小(表数范围大小)由小到大排列为:
Byte, short, char ——int ——long——float——double
1.转换时遵循的原则:
1)容量小的类型自动转换为容量的类型;
2)容量大的类型转换为容量小的类型时,要加强制转换符;
3)byte,short,char之间不会互相转换,并且三者在计算时首先转换为int类型;
4)实数常量默认为double类型, 整数常量默认为int类型;


浙公网安备 33010602011771号