看看jdk 这段源码 中方法入参 重新赋值给新变量后再使用 出发点在哪里

发布于 2021-12-06 00:03:52 字数 141 浏览 793 评论 13

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

静谧 2021-12-08 11:28:26

引用来自“小99”的评论

作者不希望自己的程序改变调用方的参数值,如果直接使用调用方传入的参数,举个例子,比如第一个srcBegin参数,传入是1,如果直接使用该参数,那么在这个getByte方法执行完后,入参的值在你下一行打印的时候就会发现改变了,具体你可以搜索java的值传递相关知识

如日中天 2021-12-08 11:28:23

在一个方法中需要大量引用实例域变量的时候,使用方法中的局部变量代替引用可以减少getfield操作的次数,提高性能。

做个少女永远怀春 2021-12-08 11:28:23

作者不希望自己的程序改变调用方的参数值,如果直接使用调用方传入的参数,举个例子,比如第一个srcBegin参数,传入是1,如果直接使用该参数,那么在这个getByte方法执行完后,入参的值在你下一行打印的时候就会发现改变了,具体你可以搜索java的值传递相关知识

绝影如岚 2021-12-08 11:28:23

有问题即使沟通哈,相互学习!

为你鎻心 2021-12-08 11:28:22

因为j与i在下面的while循环里值变化了,一个好的开发习惯是不应该修改入参的值,因为这样会使调用者很迷惑,虽然这里的int类型改变不会影响到调用者。
我倒是觉得/* avoid getfield opcode */这段注释更值得问问。

居里长安 2021-12-08 11:28:21

至少在这个方法里,我觉得没必要这么写,直接用就好了

这方法都已经标记成@Depercated了。。。

小瓶盖 2021-12-08 11:28:13

有对入参进行操作,如果后面还要用到入参,就丢失了原始值

私藏温柔 2021-12-08 11:24:06

局部变量拷贝

兮颜 2021-12-08 11:17:11

可能是出于开发者的谨慎吧,考虑到代码的可读性,传入的几个参数都会被计算导致值变化,这样会丢失初始值,以后如果要维护,要用到初始值就得改很多代码,后期也不利于维护,我觉得涉及到计算的入参,最好都用新变量接收

归属感 2021-12-08 11:12:55

value 在哪里定义的?

笑红尘 2021-12-08 11:04:42

不知有没有更有说服力的解释

等你爱我 2021-12-08 10:49:00

贴出来的就是完整的方法,之前到时听过java开发规范中有提到入参使用注意点,不好不要修改它,所以赋值后使用

泛滥成性 2021-12-08 06:53:27

下面不是j++,i++吗,估计再下面的代码,还需要用到入参的那些值吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文