java - 整型和浮点型字面量指向和使用?

标签 java

我已经阅读了有关文字及其使用方式的部分。例如,您可以在数字末尾添加 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 代码中。此外,在编译时,编译器会评估编译时常量表达式,并将它们的值直接放入代码中。 floatdouble 表达式的值可能不同,因为类型的精度不同,因此您需要指定是否要将浮点表达式视为仅float 而不是 double(默认值)。

关于java - 整型和浮点型字面量指向和使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626292/

相关文章:

java - 如何在获得焦点时制作 JComboBox 下拉列表?

java - 出现编译错误: “java:9: error: ' ;' expected” ;

java - 在 Wildfly 配置 GZip

java - 启用 jmxremote 的 JBoss 4.2.2 上的 JBossWS 中的 NPE

java - JDesktopPane.setOpaque(false) 加上 JInternalFrame 的使用会抑制包含 JFrame 的关闭

java - 如何解析 JSON 并将其值转换为数组?

java - SQL 不同的多列

java - 为什么这段代码会给我一个空指针异常?

java - ClassNotFoundException:org.postgresql.Driver

java - 如何在 Spring MVC 应用程序中使用数据表?