按值传递的意义,使得函数对形参的赋值,不对外界造成副作用。
因此,给形参赋值通常是没有意义的。(参考《编程导论(Java)·2.4.3 final变量和不变类》-final变量 )
然而,既然对形参的赋值,不对外界造成副作用,需要的时候当然可以为形参赋值。
例如求[a,b]间自然数的和,我们通常会编写如下代码
public static int sum0(int a,int b){
int total=0;
for(int i=a;i<=b;i++){
total+= i;
}
return total;
}你是否考虑一下,不要变量i?其实,i真的是多余的。
既然按值传递保护了我们,我们就应该直接对a进行++。
public static int sum(int a,int b){
int total=0;
for(;a<=b;a++){
total+= a;
}
return total;
}
学习按值传递,要知道它的表现、意义。你习惯第二种代码吗?
如果你的代码不是第二种,你还没有真正理解按值传递的意义。(其实,我本人就自然地使用i。大多数情况是我们没有注意这个问题,也没有人提到或告诉我这个问题)<

最低0.47元/天 解锁文章
2325

被折叠的 条评论
为什么被折叠?



