方法重载使用float显示"不兼容类型错误"但不包含double

Sha*_*chi 6 java type-conversion

我试过这个方法重载代码,我得到了错误

找不到合适的添加方法(双,双)

代码:

class Adder {
    static float add(float a, float b) {
        return a + b;
    }

    static int add(int a, int b) {
        return a + b;
    }
}

class TestOverloading1 {
    public static void main(String[] args){
        System.out.println(Adder.add(11.5, 11.5));
        System.out.println(Adder.add(27, 21));
    }
}
Run Code Online (Sandbox Code Playgroud)

在写作时,11.5f在params中,这很有效.

我从这里这里了解浮动和双重之间的区别.

那么,为什么Java默认将参数作为double数据类型?这种偏见背后的双精度更高吗?

我知道它默认需要加倍.但是,我想知道这背后的原因是什么?

Era*_*ran 7

没有任何后缀(例如11.5)的浮点文字是按类型double定义的类似(类似地,没有任何后缀的整数文字是类型int).

double参数不在接受的方法可接受的float参数(因为从流延doublefloat可导致数据丢失,因此,编译器将不能自动执行这样的铸件).

另一方面,11.5f是一个float文字,所以你可以将这些文字传递给你的add(float a,float b)方法.