Java基本类型的重载

class www{

    void ff(int  i){}

    void ff(long i){}

    void ff(float i){}

    void ff(double i){}

}

通过这个类,假如执行  www.ff(参数),如果参数是int、float、long、double型,那肯定能够准确找到相应的ff()方法。

但是如果www.ff(char),参数为char类型,就会把char类型直接转换为int类型,调用ff(int  i);

如果www.ff(short),参数是short类型,那么就会将short提升为更大的类型,直到能够匹配,那么就会调用ff(int i)方法。

类型升级:当无法精准找到对应的方法时,可以允许提升数据类型,来找到最合适的方法执行。

class www{    void ff(long i){}  void ff(float i){}  void ff(double i){} }  这种情况,如果 www.ff( int类型数据 ),会执行 ff(long i)方法。

 class www{   void ff(float i){}  void ff(double i){} }  这种情况,如果 www.ff( int类型数据 ),会执行 ff(float i)方法。

 class www{  void ff(double i){} }  这种情况,如果 www.ff( int类型数据 ),会执行 ff(double i)方法。

因此,类型升级的原则是:char/short 升 int,int 升 long/float/double,long 升 float/double, float 升 double。

但是类型只能是自动升,但是没有自动将,比如 double类型的参数无法去匹配 float 类型的方法。

 

总结:类型小了,没匹配到方法,就将类型变大去匹配。如果类型大了,就缩小去匹配。

注意:类型大了,只能手动去强制降级类型,数据的值可能发生变化,但是编译器不报错。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值