黑马程序员技术交流社区

标题: 赋值问题 [打印本页]

作者: wome789    时间: 2015-10-20 22:08
标题: 赋值问题
本帖最后由 wome789 于 2015-10-21 10:45 编辑

  1. public class twerwe {
  2.         public static void main(String[] args) {
  3.                 int x[] = new int[3];
  4.                 int y[] = x;
  5.                 y[1] = 89;
  6.                 x[1] = 77;
  7.                 x = null;
  8.                
  9.                 System.out.println(y[1]);
  10.         }
  11. }
复制代码
我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
作者: zombie_ad    时间: 2015-10-20 22:11
77,,,,,,,
作者: dai2686779    时间: 2015-10-20 22:40
6666666666666
作者: ppaapc    时间: 2015-10-20 22:45
这样怎么行
作者: 奔跑的小红帽    时间: 2015-10-21 00:34
77.。。。。。。
作者: wome789    时间: 2015-10-21 09:42
把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
作者: wome789    时间: 2015-10-21 09:46
zombie_ad 发表于 2015-10-20 22:11
77,,,,,,,

把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?

作者: wome789    时间: 2015-10-21 09:47
奔跑的小红帽 发表于 2015-10-21 00:34
77.。。。。。。

把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
作者: LLLLL    时间: 2015-10-21 10:30
6666666666666666666666666666
作者: 耀阳圣尊    时间: 2015-10-21 10:35
  1.         public static void main(String[] args) {
  2.                 int x[] = new int[3];//创建一个X数组大小为3,值全都为0.这个没啥说的
  3.                 int y[] = x;         //将X的地址值赋给Y,这时Y的内存地址指向X
  4.                 y[1] = 89;           //这个没什么说的,只要赋值,两个数组都会变
  5.                 x[1] = 77;
  6.                 x = null;           //重点是这, 之前他俩是指向同一个内存地址,但是后来X赋值为空
  7.                                                         //单方面的断了引用,但是y里的值已经赋值进去了,
  8.                                                         //所以说就会打印出来
  9.                                                         //就像一个风筝两条线,断了一个。另一个也能控制

  10.                 System.out.println(y[1]);
  11.         }
复制代码

作者: wome789    时间: 2015-10-21 10:45
耀阳圣尊 发表于 2015-10-21 10:35

你的意思是当x=null时,不会赋值给y的地址当中是吧?好的,学习了 ,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2