public test(int []data){
data = new int[6];
}int[]data = null;
this.test(data);想知道为什么执行后data仍然为NULL,目前DATA地址不是已经指向一块新的内存了吗,
还是传进的只是地址的一个副本值?
data = new int[6];
}int[]data = null;
this.test(data);想知道为什么执行后data仍然为NULL,目前DATA地址不是已经指向一块新的内存了吗,
还是传进的只是地址的一个副本值?
// 在这里修改 data
}int[]data = new int[6];
this.test(data);这样是可以达到目的的,为什么呢?在public test(int []data){
data = new int[6];
}这个调用中,并未更改参数 data 所引用的对象的内容,而只是将 data 中包含的值做了更改。引用类型的变量中包含的值是一个整型值,即一个地址而已。
看到标题近来了,只是想说一声java是按植传递的
data是个值
只不过这个值存的是一个地址
即数组存放得地址
函数调用得时候new了一个数组
并把数组得地址赋值给了data
data得值确实已经改变
但由于函数调用使用堆栈得原因
调用的时候data进栈,进栈时值为null
new一个数组时data值改变,不为null了
但调用完成时data出栈又用null覆盖掉了改变得data值
如果是按通常一样修改内存中的内容(比如排序 bubblesort(int []data)),是可以做到的,因为通过地址副本值,我们能够找到实际内存中内容并加以修改。
我这样理解应该没有错吧:) 谢谢大家了。