最新要闻
- 每日速递:今日月亮走我也走歌词原唱_张也_月亮走我也走歌词
- 史上最热闹!今年五一档17部电影上映:预售票房已破亿_环球看点
- 罕见!新疆出现绚丽极光:特大地磁暴引起-环球报资讯
- 世界热头条丨苹果挤爆牙膏 iPhone 15 Pro Max将搭载潜望式长焦相机
- 丧心病狂的翡翠原石直播诈骗:公然骗你好几万 根本没人管|今亮点
- CDPR引擎出BUG!实测锐龙7000用不了DLSS3 天天新动态
- 北京:西四包子铺遭46家店铺“傍名牌”
- 冷知识:原来我国实行周末双休制还不足 30 年 1995 年才开始_天天讯息
- 工技大有什么专业(工技大)
- 第八批集采药品开始挂网 7月有望用上中选产品-每日精选
- 先让有想法 再给想办法 ——积石山县牛羊产业发展见闻
- 速讯:英雄联盟之召唤师崛起_关于英雄联盟之召唤师崛起的简介
- 公务员考试资料分析公式大全_公务员考试行测资料分析公式大全|当前头条
- 这里 将是中国最后的堡垒 天天报道
- 中国职业教育(01756)中期利润同比增长50.5%至2.15亿元人民币
- 上海一女子逛商场被跳楼者砸伤住进ICU,家属:她刚入职,几天后转正
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
重载 世界热文
(相关资料图)
在同一个类中,如果多个方法有相同的名字、不同的参数,即称为重载,比如一个类中有多个构造方法。String类中的valueOf也是比较著名的案例,它有9个方法,可以将输入的基本数据类型、数组、Object等转化成为字符串。在编译器的眼里,方法名称+参数类型+参数个数,组成一个唯一键,称为方法签名,JVM通过这个唯一键决定调用哪种重载的方法。注意,方法返回值并非是这个组合体中的一员,所以在使用重载机制时,不能有两个方法名称完全相同,参数类型和个数也相同,但是返回类型不同的方法。如下示例代码:
public class SameMethodSignature { public void methodForOverload() {} // 编译出错,返回值并不是方法签名的一部分 public final int methodForOverload() { return 7; } //编译出错,访问控制符也不是方法签名的一部分 private void methodForOverload() {} // 编译出错,静态标识符也不是方法签名的一部分 public static void methodForOverload() {} // 编译出错,final标识符也不是方法前面的一部分 public final void methodForOverload(){} }
重载似乎是比较容易理解和掌握的变成技能,有时仅凭肉眼判断就能知道应调用哪种重载方法,特别是如下代码所示的第一种方法和第二种方法。前者是无参的,后者参数是int param,但是后边的三种方法,只是参数类型不同罢了。这时,如果调用methodForOverload(7),猜猜,到底调用的是谁呢?
public class OverloadMethods { // 第一种方法:无参 public void overloadMethod() { System.out.println("无参方法") } // 第二种方法:基本数据类型 public void methodForOverload(int param) { System.out.println("参数为基本类型的int方法"); } // 第三种方法:包装数据类型 public void methodForOverload(Integer param) { System.out.println("参数为包装类型的Integer方法"); } // 第四种方法:可变参数,可以接受0-n个Integer对象 public void methodForOverload(Integer ...param) { System.out.println("可变参数方法"); } // 第五种方法:Object对象 public void methodForOverload(Object param) { System.out.println("参数为Object方法"); }}
先看这五种方法的字节签名有何异同点。
// V表示Void返回值public overloadMethod() V// I就是代表int基本数据类型,而非Integerpublic methodForOverload(I) V// L表示输入的参数是对象,然后跟着package+类名 (第一处)public methodForOverload(Ljava/lang/Integer;) V// varargs 表示可变参数 (第二处)public varargs methodForOverload(Ljava/lang/Integer;) V// L同样表示对象参数public methodForOverload(Ljava/lang/Object;) V
第一处与第二处的区别是后者加了varargs标识,即可变参数,参数个数可以是0或者多个,也就是说,它和第一、二、三个方法都是有可能会争抢地盘的。首先,如果调用methodForOverload(),假如在无参方法缺席的情况下,也会调用到可变参数方法。但是如果无参方法在场,就不需要可变参数了。现在对这个类来说,methodForOverload(7)到底花落谁家?JVM在重载方法中,选择合适的目标方法的顺序如下:(1)精确匹配 (2)如果是基本数据类型,自动转换成更大表示范围的基本类型 (3)通过自动的拆箱与装箱(4)通过子类向上转型继承路线依次匹配 (5)通过可变参数匹配 精确匹配优先,这是毫无疑问的。int在和Integer的较量中胜出,因为不需要自动装箱,所以7会调用int参数的方法。如果是new Integer(7)的话,Integer参数的方法胜出。如果本方法只有methodForOverload(long),则可以接受methodForOverload(3)的实参调用;反之,如果只有methodForOverload(int),而传入long值,则会编译出错。基本数据类型转为表示范围更大的基本数据类型优先于自动装箱,即int转为long,优先于装箱为Integer。注意,null可以匹配任何类对象,在查找目标方法时,是从底层子类依次向上查找的。在本类中,如果methodForOverload(null),则会调用参数为Integer的方法。第一,因为Integer是一个类;第二,它是Object的子类。在示例代码中,如果还有单个String类型的方法,则会编译出错,因为null不知道该选择Integer还是String。根据上述匹配顺序,可变参数在竞争中明显处于弱势地位。如果调用methodForOverload(13,14),此时有两个参数,虽然有自动装箱的开销,但可变参数仍会执行这种方法请求。最后,有些程序员好奇心特别强,刚才不是说7是匹配基本数据类型优先,而 new Integer(7)是匹配包装类优先的,那如果这样定义:
public void methodForOverload(int param1,Integer param2) {} public void methodForOverload(Integer param3,int param4) {}
这种定义方式就是在考验编译器的忍耐底线,虽然编译器的内心是崩溃的,但是这样的定义是可以通过编译的,这也是一种重载方式。但是调用methodForOverload(13,14)会彻底让编译器失控。最后,假如一个类只有mehotdForOverload(Object param)和methodForOverload(Integer ...param)两种方法,根据目标方法匹配顺序,methodForOverload(7)会自动装箱,然后向上转向,遇到Object。这个规则优先于调用可变参数的重载方法。父类的公有实例方法与子类的公有实例方法可以存在重载关系。不管继承关系如何复杂,重载在编译时可以根据规则知道调用哪种目标方法。所以,重载又称为静态绑定。
关键词:
重载 世界热文
每日速递:今日月亮走我也走歌词原唱_张也_月亮走我也走歌词
史上最热闹!今年五一档17部电影上映:预售票房已破亿_环球看点
罕见!新疆出现绚丽极光:特大地磁暴引起-环球报资讯
世界热头条丨苹果挤爆牙膏 iPhone 15 Pro Max将搭载潜望式长焦相机
丧心病狂的翡翠原石直播诈骗:公然骗你好几万 根本没人管|今亮点
CDPR引擎出BUG!实测锐龙7000用不了DLSS3 天天新动态
北京:西四包子铺遭46家店铺“傍名牌”
冷知识:原来我国实行周末双休制还不足 30 年 1995 年才开始_天天讯息
工技大有什么专业(工技大)
第八批集采药品开始挂网 7月有望用上中选产品-每日精选
先让有想法 再给想办法 ——积石山县牛羊产业发展见闻
速讯:英雄联盟之召唤师崛起_关于英雄联盟之召唤师崛起的简介
公务员考试资料分析公式大全_公务员考试行测资料分析公式大全|当前头条
这里 将是中国最后的堡垒 天天报道
中国职业教育(01756)中期利润同比增长50.5%至2.15亿元人民币
上海一女子逛商场被跳楼者砸伤住进ICU,家属:她刚入职,几天后转正
美腾科技:2023年第一季度净利润约502万元
金陵刻经人的生命最后一天在上海舞台重现 环球今热点
天天热点!新华视点|探月、探火、行星探测……未来我国深空探测看点
鉴证城市向南的力量 鑫远举行品牌战略升级暨融泽府产品发布会 要闻速递
战鼓擂起来,油门轰起来,项目建设、服务效能亮出来 今热点
Python_12 多继承与多态
GPT4有那么可怕吗? 世界视点
世界实时:养老金怎么领取?条件是什么?
田青松履新
小米13 Ultra首批用户评价:可以真正养老了!
头条:充电5分钟能跑300公里!红旗E202首台OTS试制白车身顺利下线
焦点关注:《小美人鱼》女主游览动物园晒真人照引争议 还被吐槽像猩猩
天问二、三、四号官方消息:小行星火星取样返回、首次造访木星
天天简讯:涉农主体更多获得感将从这里来
张笃勤:建设长江国家文化公园示范区,武汉有责任有优势
第138篇:了解HTTP协议(TCP/IP协议,DNS域名解析,浏览器缓存)
美国近期频现由误会引发的枪击案 专家批政客对枪支暴力漠不关心-动态
智利锂矿国有化消息引发“锂王”参股公司股价巨震 可能对全球锂市场产生重大影响_每日动态
画质直逼电影!《GTA6》要官宣了:男女双主角剧情想象力巨大_环球热头条
新研究:未成年人做CT两次及以上会增加患癌风险
淄博确定了!五一清华、北大学生免费游 还有专车统一接送
当前短讯!空调技术革新,小米空调引领智能化空调,中国制造享誉世界
环球热文:【SSM】一、了解Sping 框架
世界最新:算法、表达式、生成器
165开头的是哪里电话_165开头的是哪里的号码-当前简讯
全球微资讯!苹果被国内厂商起诉,天价赔偿前所未有!
专业创作本的不二之选!华硕ProArt 创16 2023评测:极限性能和顶级OLED屏幕-天天最资讯
环球焦点!口口都是肉:众品地道肉肠1.3元/根发车(肉含量≥85%)
延续经典实体旋钮设计!华硕ProArt创16 2023正式发布
曾痛骂“骗氪”的网瘾少年 成为了玩家口中的狗策划
焦点热讯:全能轻薄本!华硕无畏Pro16 2023旗舰版发布:13代酷睿i9+RTX 4070加持
全球今日讯!4月25日机构最看好的10只股票
【全球播资讯】速戳了解!扬州住房保障新政策来了!
行业观|正收益占比最高,百亿私募增至115家 多家争相布局数字经济板块
武汉空轨列车悬空飞驰科幻感拉满!全自动驾驶、270°观景 全球今亮点
猜猜都有谁!李想:2025年新能源五大常任理事品牌诞生
AMD最强游戏处理器R7 7800X3D遥遥领先!玩家找不到第二款
联想YOGA Pro轻薄本发布:普及32GB内存 RTX 4060版干到1.3万元
SE自研AI“蠢到感人”:测试游戏《港口镇连续杀人事件》Steam差评如潮_看点
公司问答丨赣锋锂业:智利锂产业国有化将减少潜在竞争者 对行业来说可能是利好
世界短讯!防盗门锁芯好换吗_换锁芯防盗门
飞腾X100 LPDDR颗粒线序配置辅助工具-世界热点评
浅谈秦九韶算法 焦点信息
世界通讯!Mybatis框架原理概览
天天新消息丨上实望海——价格, 户型丨楼盘测评
"钢铁侠黑寡妇在今年牺牲"登热搜 网友:寡姐太可惜!
看点:还能如此?李想:想要获得更好碰撞成绩只需暂时下调零部件价格
每日动态!Intel 14代酷睿真的有四级缓存:容量超1GB!好处超乎想象
每日观察!2kg铜镇压!被动散热AMD锐龙9 7950X成功装机:无风扇零噪音
五一民宿涨价毁约被指吃相难看 多平台回应:承担最高3倍差价 实时
一款全面又开源的区块链开发者工具箱
记录-使用双token实现无感刷新,前后端详细代码-天天头条
易基因:ChIP-seq等揭示热休克转录因子A1b调控植物高温胁迫响应的分子机制|应激反应 环球观速讯
Natasha 高级编译类 (五)- 第一部分
世界速看:开心档之C++ 类 & 对象
俞敏洪豪横分红7.75亿,东方甄选高薪留人? 每日快看
债市日报:4月24日|实时焦点
【世界独家】滨海新区两个区域公用品牌登录全国名特优新农产品
手感温润如玉石!双曲屏新机vivo Y78+图赏-每日速递
深圳农民工路边即兴弹奏钢琴让人惊叹:从小热爱音乐 不甘心放弃_今日精选
【天天速看料】安全无选配!理想L8中保研测试结果出炉:25%碰撞A柱稳如泰山
近9成网友表示调休影响工作效率:摸了一天鱼 啥也没干
已婚女子求职被追问有几个孩子:HR称有2个孩子才算稳定
MySQL(一)卸载与重装
Apple 的 plist 编辑器入门指南:基础操作与高级功能详解 快播
全球即时:编程中最难的就是命名?这几招教你快速上手
世界热点评!使用Plist编辑器——简单入门指南
Django简介 安装下载 app概念 主要目录介绍_当前时讯
当前看点!公允价值变动损失同比减少 天士力一季度归母净利润同比扭亏
全球焦点!【金融街发布】人民银行:截至2023年3月末全国共有小额贷款公司5801家 贷款余额8722亿元
每日看点!从千兆到万兆,打造F5.5G全光万兆之城五大场景
SMM数据 全球快看点
暴击RTX 4060 Ti!AMD RDNA3桌面新卡终于出鞘:RX 7600 5月见
新一代雪雕!技嘉Z790 AORUS ELITE AX-W主板图赏 当前观察
环球即时看!一文看懂Hi 畅享60与华为畅享60关键区别:国产鸿蒙系统、5G你选谁?
“五一”国内机票订单量暴涨800%:北京飞大理近8000元
5月份你的工资卡里或多一笔钱:别忘了领加班费
今日热议:【介绍】C++五种迭代器
【天天播资讯】命令执行中cat 和tac的区别
Redis Plus 来了,性能炸裂! 当前短讯
产品研发流程规范-参考|每日热文
FBEC大会 | 瑞云科技 CTO 赵志杰:元宇宙时代的基础设施——实时云渲染|天天百事通
华星创业:公司投资成都司元主要系业务上考虑|全球最新