整数和浮点文字指向和使用?

时间:2013-12-17 05:04:40

标签: java

我已阅读了有关文字及其使用方法的部分。例如,您可以在数字的末尾添加l或L,以表示int是long类型。浮点数(f或F和d或D)也是如此。在数字的末尾区分这个字符有什么意义。当我们给出类型时,它还不知道为什么再次指定?那么,将这个字符添加到数字的末尾究竟是什么意思呢?它在哪里使用?

我已经尝试在google和堆栈溢出上搜索这些问题,但是还没有得到很好的答案。

2 个答案:

答案 0 :(得分:3)

编译器知道如何处理表达式的最终结果,但表达式中的各个文字(或变量)都有自己的类型,表达式中的中间值也是如此。例如:

static final double HALF = 1 / 2;

实际上将值为零,因为文字1和2是int - 类型,除法是整数除法,它产生int值为零,然后Java将其转换为double。相反,在表达式中

static final double HALF = 1d / 2;

编译器知道将第一个值视为double。第二个值被提升,Java进行浮点除法,结果是0.5正如预期的那样。

还有其他情况,例如自动装箱,编译器可能根据其类型不同地处理等效值;当传递给采用Object的方法时,0Integer,而0LLong。这种情况经常发生在持久性/ DAO代码中。此外,编译时,编译器会计算编译时常量表达式并将其值直接放入代码中。由于类型的精度不同,floatdouble表达式的值可能不同,因此您需要指定是否要将浮点表达式视为float而不是double(默认值)。

答案 1 :(得分:1)

除非您已将L或D附加到其中,否则不能在java中的任何位置使用大于2147483647的值。 l使文字长类型和d成为文字双重类型。

e.g。的System.out.println(2147483648);将导致错误以及 long num = 2147483650;也会导致错误,因为这些文字不再是int类型,它是整数的默认类型。因此,通过将l或d附加到数字,可以将其用作int或double类型。