为什么浮点数可以是整数而不抛出异常?

Why can a float be an integer without throwing an exception?

为什么会抛出异常:

float var1 = 24.0;
System.out.print(var1);

但事实并非如此:

float var1 = 24;
System.out.print(var1);

我知道,在第一种情况下,我需要在数字末尾添加“f”以区别于双精度数字。但我不明白为什么编译器在没有小数点的情况下跳过“f”没有问题。我认为即使我将变量声明为浮点数,Java 也可能将其视为 int,但 ((Object)var1).getClass().getName() 结果为 0java.lang.Float.

24.0double 文字,不能自动(隐式)转换为 float24 是一个 int 文字,所以你在这里看到的是从 intfloat.

widening primitive conversion