Java 使用浮动类型重载方法
下面代码的输出是什么?输出将是1.0,但这意味着它将优先选择双参数而不是浮动参数。请有人解释一下这个输出背后的机制Java 使用浮动类型重载方法,java,Java,下面代码的输出是什么?输出将是1.0,但这意味着它将优先选择双参数而不是浮动参数。请有人解释一下这个输出背后的机制 class X { int method(int i) { return i *= i; } } class Y extends X { double method(double d) { return d /= d; } } class Z extends Y { fl
class X
{
int method(int i)
{
return i *= i;
}
}
class Y extends X
{
double method(double d)
{
return d /= d;
}
}
class Z extends Y
{
float method(float f)
{
return f += f;
}
}
public class MainClass
{
public static void main(String[] args)
{
Z z = new Z();
System.out.println(z.method(21.12));
}
}
因为默认情况下,java中的十进制数类型是double,所以此时
System.out.println(z.method(21.12));
java要考虑21.12个值是双不浮动,因此java查找表试图找到双值
的最佳匹配 用f或f标记的浮点字面值用于调用具有浮点值的函数 System.out.println(z.method(21.12f));
运行时将文字21.12视为双精度。您可以尝试使用21.12F将其显式转换为浮点。21.12是双精度文本,这就是为什么选择了双精度方法双精度d。对于浮点文本,必须使用21.12f或21.12f。z、 method21.12f将调用float methodfloat f。默认情况下,编译器将像21.12这样的浮点文本解释为double,您需要使用21.12f将其设置为float 因此,在编译时,编译器搜索匹配最接近的方法;在这种情况下,double从基类中获取一个