gpt4 book ai didi

java - 显式类型转换与对 float/double Java 使用后缀 - 区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:46 24 4
gpt4 key购买 nike

基于下面的代码片段:

    // as primitive
MyClass.primitiveMethod(double val); // method signature
MyClass.primitiveMethod(12); // ok

// as object
MyClass.objectMethod(Double val); // method signature
MyClass.objectMethod(12); // error
MyClass.objectMethod(12d); // ok
MyClass.objectMethod((double)12); //ok

问题 1:虽然 12d(double)12 似乎都有效,但指定后缀和显式转换之间有什么区别吗? (行为/表现)

Q2:为什么MyClass.objectMethod(12)必须被认为是一个错误?虽然 12 应该被解析为 Integer 对象,但 Java 不能足够聪明地知道 12 也是一个 Double 值并直接接受它吗?

最佳答案

对于第一个问题:我期望double 的转换由编译器执行,但我不想不检查就肯定地说。为了清楚起见,我会改用后缀。 (如果我需要检查,这意味着任何维护代码的人也必须检查......为什么不直接使用正确类型的文字开始?)

12 被解析为 int,而不是 Integer - 并且没有从 intDouble 的隐式转换>。仅仅因为存在从 intdouble 的隐式转换以及从 doubleDouble 的隐式转换并不意味着有一个就在那里。

当然,它可以被包括在内——但这意味着为了相当小的好处而使语言更复杂。

关于java - 显式类型转换与对 float/double Java 使用后缀 - 区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com