Java重载(Overload)时的参数匹配原则

1、重载的定义

类中的方法如果有相同的方法名、不同的方法签名,那么这几个方法是可以重载的。

2、什么是方法签名?

方法签名即为方法名+参数列表(参数类型)。
例如:
public void printValue(int value)的方法签名为printValue(int)。

3、参数匹配原则

实例说明
先来看看下面这段代码,重载了方法名为printValue、入参分别为int和double的两个方法,并且调用时的实参传入的是float。

参数匹配原则
运行结果

Print Double Value : 2.0

可以看到传入是实参是float却调用了入参为double的方法。这其实就是Java重载时参数类型匹配的问题。

匹配规则解析
Java遇到这类问题时,总会选择一个赋值规则的精度最小的类型来使用。赋值规则即是即低精度的值可以赋值给高精度或同精度的变量,而高精度的不可以赋值给低精度。

Java基本类型中与精度有关的类型,精度从小到大排列依次是:byte、short、int、long、float、double。上述代码的实参传入的是float,按照赋值规则来看,可以选择float和double两种,上述代码中只重载double的方法,所以选择了double的那个。

当赋值规则匹配出多条重载方法时,会优先选择精度最小的那个。即同时匹配出float和double的话,就选择float。

总结
重载时(Overload)时的参数匹配规则如下:

符合基本类型的赋值规则,即低精度的值可以赋值给高精度或同精度的变量,而高精度的不可以赋值给低精度;
赋值规则匹配出多条时,选精度最小的。

Java重载时的参数匹配原则相关推荐

  1. 关于java重载函数,参数为null时,调用的处理。(精确性原则)

    关于以下程序的输出结果 public class TestNull { public void show(String a){ System.out.println("String" ...

  2. Java重载,顺序不同也算重载

    Java中,重载一个方法时,参数个数.类型或顺序中的任何一个发生变化,都可以被视为另一个方法,从而允许在同一个类中定义多个同名方法.因此,当在一个方法中重载时,参数的顺序不同,也可以被视为另一个方法. ...

  3. java 接口校验接收参数_java接口参数校验

    (可扩充) 命令编号 命令名称 参数命令 提取现场机时间 上传现场机时间 设置现... 接口标准> (以下简称"接口标准" ) <数据对接接口校验规则> < ...

  4. Java基础---方法的重载(overload)+ 优先向上匹配原则

    方法的重载(overload) 在一个类中,方法名相同,参数列表不同,方法的实现也不同的现象,称为方 法的重载. 特点:必须是在同一个类中,不同类的不构成重载:方法名相同,大小写等完全一样:参数列表不 ...

  5. 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)

    文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...

  6. Java重载方法匹配优先级

    在我们学习Java的时候关于重载有个小的知识点叫方法重载匹配优先级.虽然javac编译器能确定方法的重载版本,但是在很多情况下重载的版本并不是唯一的,往往只能确定一个相对合适的版本.请看以下代码你觉得 ...

  7. Java运行时动态加载类之ClassLoader方法带参数

    和该文环境一样http://blog.csdn.net/fjssharpsword/article/details/64922083 不同的是,在load出的class调用具体方法时传递参数. 1.U ...

  8. java运行时参数_运行时的Java 8参数名称

    java运行时参数 Java 8将引入一种更容易的方法来发现方法和构造函数的参数名称. 在Java 8之前,找到参数名称的方法是在编译阶段打开调试符号,这会在生成的类文件中添加有关参数名称的元信息,然 ...

  9. Java方法中的参数太多,第4部分:重载

    期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来解决此问题. 解决此问题的 ...

最新文章

  1. 关于python的字符串大小转换函数:capitalize() title() upper() swapcase()
  2. 行内块元素有哪些标签_html的行内元素与块级元素总结
  3. python教程:Json模块中dumps、dump、loads、load函数用法讲解
  4. com.netflix.zuul.exception.ZuulException: Hystrix Readed time out
  5. sublime67linter-php,Sublime Text 3 搭建 React.js 开发环境
  6. 手写springioc注解注入对象基本实现
  7. Eclipse配置自动提示(eclipse设置代码API自动出现)
  8. 把数字翻译成字符串python_python中如何将字符串强制转为数字
  9. 【NeurIPS2020】Google点针图网络,Pointer Graph Networks
  10. spring学习-xml属性注入-数组--list--map--set类型
  11. Python的网络编程[5] - BOOTP + TFTP + FTP - 实现一个简单的文件传输流程
  12. 如何让sublime编译c语言,如何在Sublime Text 3中编译C程序?
  13. 软件测评师之2021软件测评师新大纲《软件评测师教程(第2版)》(四)
  14. 类似Rainmeter、Conky的安卓插件
  15. 【IoT】产品模型:基于 ARM 的音视频采集与传输系统
  16. 画出psnr_计算图像的峰值信噪比PSNR以及均方根误差MSE
  17. 基准电压——Reference voltage
  18. 手机存储数据恢复软件哪个好用?试了10款,我只认准这一款!
  19. 【集大成篇】数据类型( C、C++、Java )对比
  20. 汇编:汇编与C派系语言混用以及对应LLDB常用指令

热门文章

  1. 解决“飞鸽传书”无法显示局域网用户的方法
  2. 椭圆曲线密码学简介****
  3. 大学本科《机器人程序设计课程》配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )
  4. 解决bugfree不能发邮件的问题!!
  5. Artlantis 2021 for mac(3D渲染软件)
  6. python智能家居论文_毕业设计(论文)-基于树莓派的智能家居精选.docx
  7. poi直接将excel出力为pdf或者text
  8. e:可以解包多种存档花样的小工具
  9. 福禄克Fluke TiX501 高像素红外热像仪
  10. 信道估计 信道均衡 动态均衡 盲均衡 半盲均衡 自适应均衡……