无聊小知识.04 以下代码会输出什么?

1、前言

今天同事给我看了一段代码,然后这段简单的代码,我却陷入了沉思。

2、代码

String string = "";
try {string = "123";return string;
} finally {string = "234";
}

这段代码,string最终是“123”还是“234”呢?按照以往认知:finally快是如论如何都要执行的,而return会等待finally执行结束后返回,这里string被修改为"234",那么return的值也就是"234"。

如果你也是这么想的,那么恭喜你,你也错了。

我们来看下chatGPT怎么说的:

 正如chatGPT所说的,确实如此。这里吐槽以下,文某某言返回的居然是“234”???

我们用IDEA执行下这段代码:

甚至我们可以看到,idea在finally里面的赋值给出了提示。 提示该string的赋值是不会被使用的。 

而执行结果也正是123。

那么既然结果如此,那么真相是什么呢?

3、return和finally

其实finally始终都会执行是没错的!!! 我们先来看下该方法的字节码:

我们可以看到当执行到return时,此时string=123,jvm会将此时的变量地址存储到栈中,当finally执行了string=234后,只是改变了堆对象的值,而方法返回的该变量的地址。此时finally虽然改变了值,但是地址没有被改变,因此返回的还是原地址所执行的值。

4、改变一下

String string = "";try {string = "123";return string;} finally {string = "234";return string;}

 那如果是这段呢?finally中也加了return。我们再来看下字节码:

与上面不同的是,这里多了个areturn,也就是是这里的finally最终的返回会将该变量的地址推到栈顶位置,也就改变了原string=123的值,所以string就会输出234了。

 

 5、小结

好了,又一个无聊又有趣的小知识。如果这个会出错的,大多还是对于jvm以及基础不够扎实的缘故。这里我也检讨一下。还是要学会看字节码的习惯,这里字节码是不会骗人的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45070.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API接口设计不合理?个人和公司都有问题

前言 在软件产品或项目开发过程中,往往涉及到大量API接口的开发任务。而一个接口的诞生如果是令人费解的、痛苦折磨的以及有严重后遗症的,究其根本原因还在于设计API接口的时候不够清晰、合理以及缺乏长远考虑。我依据多位同事的问答、实际工作的经验和…

从亿点点失误,到一点点失误,我是如何做的【工作失误怎么办】

前言 只要我们还在做事,或者说还活着,就没有不犯错的时候。作为一名前端搬砖工,哪怕工作中再仔细小心,也免不了一些失误。 那这是不是说,失误很正常,改了就是嘛? 这么说好像没错。作为失误本…

2023年春季学期NLP总结作业

自然语言处理(Natural Language Processing,NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向…

检讨怎么写?检讨范文,秘密法宝帮你一分钟速写检讨

检讨不会写,看这里,一分钟速成班教学开始 其实。。。哪有什么一分钟速成班,就是告诉你有个秘密法宝,一分钟之内帮你写出一篇检讨,你只要输入你的问题描述,包括因为什么犯了错、需要写几百字等等&#xff0…

[Android] 检讨书生成器1.0

软件介绍 软件名称:检讨书生成器 适用设备:Android 软件大小 : 10.4 M 使用说明 进入软件后在主题对话框输入,例如:上课 吃屎,字数200,即可生成检讨书,如图所示 下载链接

为啥不能用比特币给贪官送礼?

知乎上有很多脑洞,飘在天上的还好说,结合现实的也太好笑了,比如下面这个: 图源知乎 谈笑间,币圈灰飞烟灭。 ——网友热评

企业微信如何快速接入智能机器人(智能客服)?

如何让你的企业微信快速接入智能机器人,增加和员工互动的趣味性,同时解决员工各种高频问题呢? 1、首先,你需要创建一个属于自己的聊天机器人,直接注册并完成创建就可以了。 2、找到【对接渠道】,选择【企业…

工具类-21-企业微信自助QA机器人接入

文章目录 1. 需求背景2. 相关文档整理3. 接入流程演示3.1 拉群,添加机器人3.2 给机器人取个名字3.3 点击配置说明3.4 配置 接收消息配置 信息 4. 代码演示 1. 需求背景 在企业当中,经常会被多次问到相同的问题,而我们都有自己的其他需求需要…

微信中如何接入机器人才比较正常

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 为什么会有这个话题?大家都知道最近有个AI机器人很火,那就是AI机器人,关于它的介绍,大家可以自行百度去,我这边就不多介绍了。 好多人嫌网页版玩的不过瘾,就把这个机器人接入到了QQ上,接入到了钉钉上,TG …

微信接入智能机器人回复消息

微信接入智能机器人回复消息 1 寻找智能机器人API 此处我使用的是极速数据 七款不错的聊天机器人API推荐 ①登录注册之后,直接搜索机器人 ②申请数据 ③在个人中心,找到自己的appKey ④编写代码,根据接口地址发起对应的HTTP请求即可 …

目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

&#x1f496;&#x1f496;>>>加勒比海带&#xff0c;QQ2479200884<<<&#x1f496;&#x1f496; &#x1f340;&#x1f340;>>>【YOLO魔法搭配&论文投稿咨询】<<<&#x1f340; ✨✨>>>学习交流 | 温澜潮生 | 合作共赢…

chatgpt赋能Python-python_miio

Python-miio&#xff1a;探索小米智能设备的开发 Python-miio是一个开源的Python库&#xff0c;用于控制小米智能设备。小米智能设备包括智能扫地机器人、智能插座、智能空气净化器和智能灯泡等。Python-miio库支持局域网和互联网控制&#xff0c;是一个非常实用的工具&#x…

Python外星人入侵游戏——添加飞船和外星人图片

Python外星人入侵游戏是自己在《Python编程从入门到实践》在本书里学到的。本篇主要介绍该游戏中所需要的两个图片。分别为飞船和外星人图片。 1、首先去到 http://www.ituring.com.cn/book/1861 网站&#xff0c;就会看到有关Python编程从入门到实践这本书。 2、在右边有个随…

Stable Diffusion模型测试

文章目录 前言一、dqnapi 是什么&#xff1f;二、使用步骤1.本地2.在线测试 总结 前言 AI图像生成异常火爆&#xff0c;听说鹅厂都开始用AI图像生成做前期设定了&#xff0c;小厂更是直接用AI替代了原画师的岗位。这一张张丰富细腻、风格各异、以假乱真的AI生成图像&#xff0…

chatgpt赋能python:Python用于电力行业的应用与未来趋势

Python用于电力行业的应用与未来趋势 Python作为一种易学易用的编程语言&#xff0c;在不同行业中有着广泛的应用。本文将介绍Python在电力行业中的应用&#xff0c;重点讨论其在用电量分析和预测方面的优势&#xff0c;并探讨未来Python在电力行业中的应用趋势。 Python在用…

ChatGPT在能源行业的预测场景:智能能源管理和异常检测的未来趋势

第一章&#xff1a;引言 能源是现代社会发展的关键驱动力之一&#xff0c;然而&#xff0c;传统的能源管理方法存在许多挑战&#xff0c;如能源浪费、供需不平衡以及能源异常等。为了应对这些挑战&#xff0c;智能能源管理系统逐渐崭露头角。在本文中&#xff0c;我们将探讨Ch…

如何申请成为openai chatgpt的alpha内测人员

今天登录账号时意外发现侧边栏有个take survey链接写着wed love to hear from you. shape the future of chatgpt. 点进去首页显示这个 ChatGPT User Survey 感谢您参与我们关于ChatGPT的用户研究调查&#xff01;我们感谢您的时间和反馈&#xff0c;这将帮助我们提高产品质量…

达摩院开源人脸检测榜首模型MogFace

01 开源 论文链接 https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_MogFace_Towards_a_Deeper_Appreciation_on_Face_Detection_CVPR_2022_paper.pdf 模型&代码 https://modelscope.cn/models/damo/cv_resnet101_face-detection_cvpr22papermogface/summary 简…

聊聊并发——生产者消费者模式

(转自&#xff1a;http://www.infoq.com/cn/articles/producers-and-consumers-mode?utm_sourceinfoq&utm_campaignuser_page&utm_mediumlink) 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的…

阿里内贸团队敏捷实践(二)自组织管理

实现团队的自组织管理&#xff0c;非常有助于团队形成合力&#xff0c;极大地提升团队整体的工作效率。本文结合原阿里ITU内贸团队的敏捷实践经历&#xff0c;阐释了何为自组织管理、为什么进行自组织管理、如何进行自组织管理等内容&#xff0c;同时给出了团队实施自组织管理的…