Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在java中int被转换为float?_Java_Casting - Fatal编程技术网

为什么在java中int被转换为float?

为什么在java中int被转换为float?,java,casting,Java,Casting,在此代码中 public void display(int x, double y){ System.out.println("Double"); } public void display(int x, float y){ System.out.println("Float"); } public static void main(String[] args){ pr

在此代码中

    public void display(int x, double y){
        System.out.println("Double");
    }
    public void display(int x, float y){
        System.out.println("Float");
    }
    public static void main(String[] args){
        prog01 p = new prog01();
        p.display(4,5); //First Output
        p.display(4,5.0); // Second Output
    }
这些产出是:

Float
Double
第二个输出是可以理解的,但是为什么5在应该给出错误时被强制转换为浮点呢?

加宽强制转换(隐式)发生时,
字节
->
int
->
浮点

这里传递整数,因为它没有
long
作为类型,下一个是
float
。这就是为什么它会给你浮动,为什么它会给你一个错误?该值是隐式加宽的。@akuzminykh为什么不加宽到两倍?它在哪里说应该加宽到
double
,而不是
float
?您的期望依据是什么?@AyushBasak查看限制
整数.MAX_值
浮点.MAX_值
;一个
double
是不必要的。@AyushBasak说到你的观点:你可以想象找到一个方法的过程是这样的:1)编译器搜索一个与你正在传递的参数及其类型完全匹配的方法。2) 如果在1)中找不到任何方法,编译器允许扩大搜索范围。在您的例子中,编译器会找到方法
display(int,double)
,因为
5
可以扩展到
float