加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在调用函数时哪一个更好:两次或将结果存储在变量中?

发布时间:2020-12-14 05:57:07 所属栏目:Java 来源:网络整理
导读:我多次怀疑这个问题,但没有找到正确的解决方案.这次我要清除它.我有情况喜欢 1. String sNumber="ksadfl.jksadlf";if(sNumber.lastIndexOf('.')0) //do something......if(sNumber.lastIndexOf('.')1) //do something...2.int index = sNumber.lastIndexOf('
我多次怀疑这个问题,但没有找到正确的解决方案.这次我要清除它.我有情况喜欢
1. 
String sNumber="ksadfl.jksadlf";
if(sNumber.lastIndexOf('.')>0)
   //do something
...
...
if(sNumber.lastIndexOf('.')>1)
 //do something
...

2.
int index = sNumber.lastIndexOf('.');
if(index>0)
//do something
...
...
if(index>1)
//do something
...

第一种方式和第二种方式之间的权衡是什么?哪一个更好地将结果存储在变量中或者调用函数两次?

解决方法

在此示例中,从性能角度来看,第二种形式更好(在大多数合理的情况下1),并且(IMO)更具可读性.

一般来说,需要考虑几个权衡因素:

>可读性比效率更重要吗?
>与“一次”相比,调用该方法两次的“性能损失”是多少?

此外,您还需要考虑方法可能具有副作用的情况,以及它是否可以在两个连续的调用中给出不同的答案.在这些情况下,调用方法两次在语义上与调用它一次并将结果存储在临时变量中是不同的.

1 – 索引变量使堆栈帧1个字更大.通常情况下这没关系,但是如果代码是以递归方式调用的递归方法,则1个额外的字乘以一些嵌套调用可能会导致StackOverflowError.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读