A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wome789 中级黑马   /  2015-10-20 22:08  /  717 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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依然能打印出来呢?

11 个回复

倒序浏览
77,,,,,,,
回复 使用道具 举报
6666666666666
回复 使用道具 举报
这样怎么行
回复 使用道具 举报
77.。。。。。。
回复 使用道具 举报
把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
回复 使用道具 举报
wome789 中级黑马 2015-10-21 09:46:46
7#
zombie_ad 发表于 2015-10-20 22:11
77,,,,,,,

把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
回复 使用道具 举报
wome789 中级黑马 2015-10-21 09:47:54
8#

把话打到代码里了,没显示出来。我想问的是,为什么x的值传递给y后,y的值改变,但是当x赋值为空时,y依然能打印出来呢?
回复 使用道具 举报
LLLLL 中级黑马 2015-10-21 10:30:55
9#
6666666666666666666666666666
回复 使用道具 举报
  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.         }
复制代码
回复 使用道具 举报

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

点评

恩恩 是的, 没事没事  发表于 2015-10-21 11:08
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马