猿问

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

首先看代码:
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的内容未发生变化呢?
扬帆大鱼
浏览 778回答 2
2回答

翻阅古今

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);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答