Java 常量值(也叫字面量)和变量一样,也是有数据类型的。
经常有面试题考察你对 Java 常量值数据类型的理解,如下:
float a = 3.3;
问你这一行代码是否正确?答案肯定是不正确。为什么呢?
因为 3.3 这个常量值默认数据类型不是 float,而是 double。
这有什么关系吗?
当然有呀,因为现在有一个 float 类型的变量 a,存储一个 double 类型的常量值,两个类型不同,就涉及到类型转换。而自动类型转换必须遵循容量小的数据类型自动转换为容量大的数据类型的原则,这里是将容量大的 double 类型转换成容量小的 float 类型,所以无法实现自动类型转换的,编译器将报错。
那如何修改呢?有两种改法。
float a = 3.3f;
double a = 3.3;
Java 常量值的数据类型表
常量值 | 数据类型 |
---|---|
22 | int |
22L | long |
22l | long |
22.2 | double |
22.2f | float |
'A' | char |
true | boolean |
"ABCD" | String |