我已经阅读了有关文字及其使用方式的部分。例如,您可以在数字末尾添加 l 或 L 以表示该 int 是 long 类型。 float (f 或 F 和 d 或 D)也是如此。在数字末尾区分这个字符有什么意义。当我们给出类型时,它是否已经知道为什么要再次指定?那么,将这个字符添加到数字末尾到底有什么意义呢?它在哪里使用?
我已经尝试在 google 和 stack overflow 上搜索这些问题,但未能得到完善的答案。
最佳答案
编译器知道如何处理表达式的最终结果,但表达式中的各个文字(或变量)都有自己的类型,表达式中的中间值也是如此。例如:
static final double HALF = 1 / 2;
实际上的值为零,因为文字 1 和 2 是 int
类型的,除法是一个整数除法,它产生的 int
值为零,并且然后 Java 将其转换为 double
。相反,在表达式中
static final double HALF = 1d / 2;
编译器知道将第一个值视为double
。第二个值被提升,Java 做浮点除法,结果如预期的那样是0.5
。
还有其他一些情况,比如自动装箱,编译器可能会根据它们的类型不同地处理等价的值;当传递给采用 Object
的方法时,0
是一个 Integer
,而 0L
是一个 长
。这种情况经常发生在持久化/DAO 代码中。此外,在编译时,编译器会评估编译时常量表达式,并将它们的值直接放入代码中。 float
和 double
表达式的值可能不同,因为类型的精度不同,因此您需要指定是否要将浮点表达式视为仅float
而不是 double
(默认值)。
关于java - 整型和浮点型字面量指向和使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626292/