下面的方法调用,会打印哪个语句?为什么?

下面的方法调用,会打印哪个语句?为什么?

public static void one(float a){
        System.out.println("float " + a);

public static void one(double a){
        System.out.println("double " + a);


public static void main(String[] args){
        int intNum = 0;
        one(intNum);

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2022-09-04 11:10:05

同学你好,1、该代码会调用one(float a)方法,输出:float 0.0

2、因基础类型可以自动转换,所以int类型转换为了float类型,所以在此处调用的是one(float a)方法。如下所示:

https://img1.sycdn.imooc.com//climg/6314170b09d0f48414540770.jpg

类型转换同学可以复习下方课程:

    https://class.imooc.com/lesson/2050#mid=48685  

祝学习愉快!

  • 提问者 醉流觞 #1

    ① int 也可以自动转换成 double,为什么不会调用 one(double a)?

    ②如果还有一个方法 one(long a),运行时又会调用 哪个?
    如果再写一个方法 one(int a),运行时又会调用哪个?

    ③ 我疑惑的是,如果调用重载方法时,入参数据类型恰巧可以同时自动转换成两个以上重载方法的参数类型,调用机制是怎样的?是不是有什么优先级?

    2022-09-04 12:49:54
  • 好帮手慕小尤 回复 提问者 醉流觞 #2

    同学你好,1、自动转换是从低位类型到高位类型可以是自动转换,由低级到高级分别为(byte,short,char)--int--long--float--double。当有两个类型时,会先自动装换为高一级的类型。所以在此时int类型转换为float类型了。

    2、

        1)如果有 one(long a)方法,就会先调用该方法。

        2)如果有one(int a)方法,就会直接调用该方法,就不需要进行类型转换了。

    3、会根据类型转换的顺序进行调用((byte,short,char)--int--long--float--double)。

    祝学习愉快!

    2022-09-04 13:39:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师