为了账号安全,请及时绑定邮箱和手机立即绑定

Java 递归调用里修改引用无效的问题

Java 递归调用里修改引用无效的问题

扬帆大鱼 2019-05-22 17:48:09
首先看代码:importds.Trie;importjava.util.Arrays;/***Createdbyclearbugon2018/3/6.*/publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();int[]res=newint[1];t.dfs(0,res);System.out.println(Arrays.toString(res));}publicvoiddfs(intk,int[]obj){if(k==5){obj=newint[]{1,2,3,4,5};return;}dfs(k+1,obj);}}控制台输出内容如下:[0]我想问的是,我明明在递归调用里面修改了引用objobj=newint[]{1,2,3,4,5},为什么递归调用完成后,引用obj的内容未发生变化呢?
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

publicstaticvoidmain(String[]args){
Testt=newTest();
int[]res=newint[1];
t.dfs(0,res);
System.out.println(Arrays.toString(res));
}
publicvoiddfs(intk,int[]obj){
if(k==5){
//obj和res指向同一个对象,obj=newint[]{1,2,3,4,5}修改的是obj的引用,不是res的引用,所以res的内容不会改变,可以直接修改res的内容,例如obj[0]=1;
//obj=newint[]{1,2,3,4,5};
obj[0]=1;
return;
}
dfs(k+1,obj);
}
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 777 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号