黑马程序员技术交流社区

标题: 问int[] x,y[] 的问题求调教!!! [打印本页]

作者: 曾文德    时间: 2013-8-14 21:03
标题: 问int[] x,y[] 的问题求调教!!!
本帖最后由 曾文德 于 2013-8-15 19:13 编辑
  1. 问 int[] x,y[]; 一下那个答案是对的
  2. a.
  3. x[0]=y;//错的
  4. b.
  5. y[0]=x;//对的
  6. c.
  7. y[0][0]=x;//错的
  8. d.
  9. x[0][0]=y;//错的
  10. e.
  11. y[0][0]=x[0];//对的
  12. f.
  13. x=y//错的
复制代码
我搞了半天没搞明白
作者: 谢铭    时间: 2013-8-14 21:24
本帖最后由 谢铭 于 2013-8-14 21:47 编辑

  1. public class Demo {
  2. public static void main(String[] args){
  3. int[] x, y[];
  4. x = new int[3];
  5. y = new int[3][3];
  6. x[0] = 3;
  7. y[0][0] =1;
  8. System.out.println(x[0]);
  9. System.out.println(x);
  10. System.out.println(y);
  11. }
  12. }
复制代码
如果对于int []x,y[]还有疑问的话,你可以测试下上面这段代码,输出的结果是:
3    //上面赋值了,所以输出结果是这个
[I@cdb06e  // [表示的是一维数组,@后面的是内存地址值
[[I@1fa1bb6 // [[表示二维数组,@后面的是内存地址值
  1. int[] x, y[]
  2. 上面这段代码是拆成两部分的
  3. int[]x; //一维数组
  4. int[] y[]; //二维数组
  5. x[0] = y; //这里是指导二维数组y赋值给一维数组x的0角标,结果就是错的
  6. y[0] = x; //把一维数组赋值给二维数组中,y[0]的一维数组,结果是对的
  7. y[0][0] =x; //这个是把二维数组中,第一个一维数组的0角标位上的值赋值给一维数组x,结果是错的
  8. x[0][0] = y; //x为一维数组,不存在x[0][0]这种写法,赋值不了,结果是错的
  9. y[0][0] = x[0] //把一维数组x的0角标位上的值赋值给二维数组y的第一个一维数组的0角标,结果是对的
  10. x = y; //不能把二维数组赋值给一维数组
  11. 最主要的是要看懂哪个是一维数组,哪个是二维数组
复制代码

作者: 张聪珉    时间: 2013-8-14 21:47
int[] x,y[]拆分起来是这样的int[] x , int [][] y,
x是一维数组,x[0]是基本数据,x[0][0]不存在因为x是一维数组
y二维数组,而y[0]是一维数组,y[0][0]是基本数据
这样你比较起来就能懂了吧。
作者: yangxin540    时间: 2013-8-14 22:13
int[] x,y[];实则定义了一个int[] x数组,和一个二维int []y[],这样你应该明白了吧
作者: yangxin540    时间: 2013-8-14 22:15
int[] x,y[];实则定义了一个int[] x数组,和一个二维int []y[],这样你应该明白了吧
作者: 你懂得    时间: 2013-8-14 22:22
int[] x,y[]; 其实是两个数组的结合体,可以拆分为:一位数组,int[] x;二维数组,int[] y[];这个二维数组还可以写成:int y[][]  ,int[][] y的形式。

作者: 曾文德    时间: 2013-8-14 23:11
谢铭 发表于 2013-8-14 21:24
如果对于int []x,y[]还有疑问的话,你可以测试下上面这段代码,输出的结果是:
3    //上面赋值了,所以输 ...
  1. y[0][0] =x; //这个是把二维数组中,第一个一维数组的0角标位上的值赋值给一维数组x,结果是错的
  2. y[0][0] = x[0] //把一维数组x的0角标位上的值赋值给二维数组y的第一个一维数组的0角标,结果是对的
  3. 主要是不理解这两个 y[0][0]=x 和y[0][0]=x[0]这不就是一样的吗?只是一个写出了数组[]一个没写而已啊
复制代码

作者: masterV    时间: 2013-8-15 02:41
很明显这x是一个一维数组,而y是一个二维数组:
int[] x, y[];等价于
int[] x;
int[] y[];这样写代码阅读性很差,一般写成int[][] y;
y是一个二维数组,那么y[0]自然就是一个一维数组。这样说能理解么?
作者: 刘劲松    时间: 2013-8-15 08:08
曾文德 发表于 2013-8-14 23:11

前者是指向x[0]的地址,后者是x[0]元素的值。而二维数组y[0][0]里y[0]指的是第一行第一个的地址,你想象矩阵第一行。不是有个y[0].length来表示第一行的元素个数的么,这么说理解了吧。
作者: meng    时间: 2013-8-15 09:19
我的理解:int[] x, y[]这句话是定义了一个int[]类型(也就是一位数组类型)的数据x,和 y[],然后就出现了一个一位数组x和一个二维数组y
作者: 薛鹏鹏    时间: 2013-8-15 10:30

亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作




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