首先看代码: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);}
添加回答
举报
0/150
提交
取消