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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾文德 中级黑马   /  2013-8-14 21:03  /  1530 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾文德 于 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//错的
复制代码
我搞了半天没搞明白

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

10 个回复

倒序浏览
本帖最后由 谢铭 于 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. 最主要的是要看懂哪个是一维数组,哪个是二维数组
复制代码

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
int[] x,y[]拆分起来是这样的int[] x , int [][] y,
x是一维数组,x[0]是基本数据,x[0][0]不存在因为x是一维数组
y二维数组,而y[0]是一维数组,y[0][0]是基本数据
这样你比较起来就能懂了吧。

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
int[] x,y[];实则定义了一个int[] x数组,和一个二维int []y[],这样你应该明白了吧
回复 使用道具 举报
int[] x,y[];实则定义了一个int[] x数组,和一个二维int []y[],这样你应该明白了吧
回复 使用道具 举报
int[] x,y[]; 其实是两个数组的结合体,可以拆分为:一位数组,int[] x;二维数组,int[] y[];这个二维数组还可以写成:int y[][]  ,int[][] y的形式。
回复 使用道具 举报
谢铭 发表于 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]这不就是一样的吗?只是一个写出了数组[]一个没写而已啊
复制代码
回复 使用道具 举报
很明显这x是一个一维数组,而y是一个二维数组:
int[] x, y[];等价于
int[] x;
int[] y[];这样写代码阅读性很差,一般写成int[][] y;
y是一个二维数组,那么y[0]自然就是一个一维数组。这样说能理解么?
回复 使用道具 举报

前者是指向x[0]的地址,后者是x[0]元素的值。而二维数组y[0][0]里y[0]指的是第一行第一个的地址,你想象矩阵第一行。不是有个y[0].length来表示第一行的元素个数的么,这么说理解了吧。
回复 使用道具 举报
meng 高级黑马 2013-8-15 09:19:37
10#
我的理解:int[] x, y[]这句话是定义了一个int[]类型(也就是一位数组类型)的数据x,和 y[],然后就出现了一个一位数组x和一个二维数组y
回复 使用道具 举报

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

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


保持队形,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马