有关基本数据类型转换的疑问

在基本数据自动类型转换的内容中:
byte a = 10
//老师讲到Java自动认为整数是int类型,现在赋给byte类型变量是可以,因为会先进行整数的范围确定,10是在-128到127之间
但是对于以下代码不行是为什么呢?
float b=1.1
//这样写系统会报错,说是不能由double类型转成float类型,我的疑问是为什么这个时候赋值不是按照上面的一样,先看这个小数1.1在不在float所能存储的范围内再判断类型呢?

自动转型只能从低精度转到高精度,精度低到高:int<float<double。小数1.1默认是double类型,所以不能转为float或者int型。写作1.1F就是float类型了。至于为什么默认是double类型,我也想不明白,可能是方便吧......