先说废话:Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
解释楼主的问题:
1、为什么[size=11.8181819915771px]float b=3.14;错我们首先看编译结果:错误: 可能损失精度。我们知道默认的浮点数是double类型,之所以这样就是为了保证浮点型的精度的完整性,所以这样导致3.14(JVM认为是double)赋值到float时编译出错。正确方法:float c=3.14f;
2、既然上面的都错了,为什么short b = 2;没有报错。我们知道隐性转换一般都是放宽转换(如byte到int,int到long等,都是小的赋给大的。)但是却有一个例外就是,在赋值转换中, 隐性转换也包含了缩窄基本转换。就是从int到byte,char,short的转换:
比如:
byte b=1;//合法
byte b=128; //非法
char和short都是同理的。
右边必须为int型字面常量,而且值必须能被左边类型表示 |