weixin_45961022 2021-12-07 14:10 采纳率: 0%
浏览 38

引用调用,当赋值为null时,为什么没有改变

class TestIt
{
public static void main ( String[] args )
{
int[] myArray = {1, 2, 3, 4, 5};
ChangeIt.doIt( myArray );
for(int j=0; j<myArray.length; j++)
System.out.print( myArray[j] + " " );
}
}
class ChangeIt
{
static void doIt( int[] z )
{
if(z.length>0)z[0]=8;
z = null ;
}
}

这个输出的结果是8 2 3 4 5.
我知道对象或数组作为参数传递时,传递的是一个引用,将z[0]赋值为8直接将z指向的数组{1, 2, 3, 4, 5}第一个元素改为8,但是将z指向null为什么就变成值传递了呢

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2021-12-07 14:17
    关注

    这里主要是要明白一个点,如果传递一个值,你在函数内是修改不了外部传入的这个值的
    那么这个值可以是个整数,也可以是个对象。我们可以修改对象的元素,但不能修改对象本身,这个逻辑和上述整数值传递不能修改传入变量是相同的逻辑啊
    因为值传递是一个复制品。那么对象本身传递也是复制品,但传入值和复制品的值是一样的,指向同一个地址,这个地址的内容,函数内外都可以修改且共享

    评论

报告相同问题?

问题事件

  • 创建了问题 12月7日

悬赏问题

  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录