值传递和引用传递

先上结论:

1.基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的

2.对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

例子

  stack.push(root);
 root = root.left;

想想为啥 我直接修改了root = root.left; 为啥栈中的数据还是以前的root

首先stack.push方法会将root的在堆中的地址拷贝给stack,也就是说stack拿的是root的真实地址,
而 root = root.left; 只是让root这个引用指向了一个新的地址,而stack中用的是新的引用和老的地址所以不受影响

你可能感兴趣的:(值传递和引用传递)