关于java中方法重载和基本数据类型转换的面试题

面试题 请选择输出的结果是什么?  ( ) 

A. byte    B.char   C.short   D.long   E.double

public class Demo {
    public static void main(String[] args) {
        Demo b=new Demo();
        b.sout(127);
    }
    void sout(byte c){
        System.out.println("int");
    }
    void sout(char c){
        System.out.println("char");
    }
    void sout(short c){
        System.out.println("short");
    }

    void sout(int c){
        System.out.println("short");
    }
    void sout(long c){
        System.out.println("long");
    }
    void sout(double c){
        System.out.println("long");
    }
}

答案是long

此题如上,涉及知识点如下:


重载:同一类中,方法名相同,参数类型、个数、顺序不同的方法,称之为方法的重载,方法的重载与方法的返回值、修饰符,参数名称无关;

字面量值得类型:

整数型为int  浮点型为double   

类型转换:

自动类型转化:数据类型范围小的变量数据会自动转换为数据类型范围大类型

自动类型转换的依次顺序

强制类型转换:数据类型范围大的变量或数据可以转换为数据范围类型小的类型,

格式:   类型范围小的变量    =  (转换类型)   类型范围大的数据或变量

int i=5;
long l=5;
l=i;

  上面的大家基本都能理解,另外一点需要注意的是int类型字面量可以在类型范围内赋值给char  byte  short 

byte =5   //-128-127
short =5  // -32768~32767
char =5   //0-65535

值传递

调用方法传递参数时,如果参数是基本类型,则传递的是基本类型的值,如果参数类型是引用类型,则参数传递的是对象的地址值


现在回看面试题,

解题思路:

方法调用时传递的参数是int类型值为127

查找参数为int类型的方法

没有,查看参数取值类型范围  byte short long double 都满足

是到底是直接赋值给char short还是自动转型到long doudle? 

其实参数传递进方法时,类型已经确定为int 类型,

由于没有int类型参数的方法,参数值发生自动类型转换,

int 转为long,如果没有long者转化为float ,先后依次顺序看上面的自动类型转换的依次顺序

也可以在IDEA中粘贴以上代码进行测试.依次将int类型参数注释掉,查看运行结果,

或者断点调试,查看程序执行顺序;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值