一,为什么添加尾缀呢?
(1)防止编译器报错。
(2)增加程序可读性。
例如:
long lNum = 1234L;
float fNum = 1.23F;
double dNum = 1.23D;
注意尾缀是可以使用小写的l,f,d的,但是推荐使用大写,更易区分l和L
二,为什么有时候省略也不报错?
(1)对于整数,例如:1,2,3这些没有带小数点的,JVM虚拟机是默认为int类型数据的。所以,当整数直接量赋给long、float或者double,而不添加尾缀,虚拟机也会直接将int类型数据自动转换为对应类型然后赋值。因为数据长度短的转换为长的并不会造成数据丢失,所以默认可以自动转换。 例如:
long a = 1234; //不报错,int默认转为long
float b = 1234; //不报错,int默认转为float
double c = 1234; //不报错,int默认转为double
(2)对于带有小数点的。例如:1.23。JVM虚拟机默认为double类型,如果直接赋值给float就会引起编译器报错。
float a = 1.23; //报错,JVM默认是double的不能赋值给float
float b = 1.23f; //添加尾缀,告诉JVM是float类型
另外:
long a = 1.23L; //报错,L只是告诉了虚拟机这是long类型,但是不能自动实现强制类型转换
long a = (long)1.23L; //报错,不能带L
long a = (long)1.23; //正确。