相关疑难解决方法(0)

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

基于下面的代码片段:

    // 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
Run Code Online (Sandbox Code Playgroud)

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

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

java

5
推荐指数
1
解决办法
7479
查看次数

标签 统计

java ×1