java - 在 Java 中为 long 和 float 基本类型赋值

标签 java

<分区>

我有一个关于在 Java 中声明长变量的问题:

编译:long x = 10;
这会产生编译器错误:long x = 1000000000000
编译:long x = 1000000000000L
为什么我不需要在第一种情况下在数字后面加一个 L?这与编译器自动将 long 值转换为 int 值有什么关系(因为我猜这就是第一个示例中发生的情况)?

还有关于 float 的相同问题:

这不会编译:float f = 10.1;
编译:float f = 10;
编译:float f = 10.1f;

为什么第一个示例无法编译?为什么在第二个例子中不需要 f 前缀?这与编译器自动转换为 double 有什么关系?

提前致谢!

最佳答案

没有任何后缀的数字常量具有默认类型。如果它们是整数(即它们没有 float ),则默认类型为 int。如果它们有 float ,则默认类型为 double

因此,没有 L 后缀的整数常量(表示 long 文字)不能大于 Integer.MAX_VALUE,而 double code> 常量 10.1 不能在没有显式转换的情况下分配给 float 变量。

另一方面,int 10 可以分配给 float 变量,float 10.1f

关于java - 在 Java 中为 long 和 float 基本类型赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682280/

相关文章:

java - java 编程时出错

java - 在另一个任务Java中调度任务

java - 从不同目录启动应用程序(.jar 文件)时如何获取位于类路径中的绝对文件路径?

java - 来自反射的哈希码?

java - XSLT 参数不起作用

java - 歌曲第一次播放但停止后不播放 : Clip in Java

java - Swing JDialog 错误?

java - 如何在java中使用注释相关参数检查自定义运行时异常属性

java - 如何修复错误 "reading .m2\repository\junit\junit\4.8.2\junit-4.8.2.jar"并使用 Java 6 进行编译?

java - 有没有一种简单的方法来获取java对象的大小?