为何 short s1 = 1; 是对的,而 float f=3.4; 是错的?
在Java中,没小数点的默认是
int
,有小数点的默认是double
编译器可以自动向上转型,如 int 转成 long 系统自动转换没有问题,因为后者精度更高 ;但如果是向下转型,就需要强制类型转换
short类型变量的初始化语句,只要不超过short范围( -215 ~ 215-1 )的就可以直接初始化,所以short s1 = 1;是对的;
而对于小数,默认情况下:float f=3.4;
中的小数3.4此时为double类型。此时,等式float f=3.4;
左边为float类型,等式右边为double类型,将涉及到强制类型转换,所以float f=3.4;
这个写法是错误的,