黑马程序员技术交流社区

标题: 请问这样定义数组有什么区别 [打印本页]

作者: 刘海陆    时间: 2013-5-25 21:01
标题: 请问这样定义数组有什么区别
本帖最后由 刘海陆 于 2013-6-1 10:22 编辑

int[][]  arr = {};
int[][] arr = {{}};
int[][] arr = new int[0][0];
int[][] arr = new int[0][];
作者: 王靖远    时间: 2013-5-25 21:10
2和3对一维二维数组都设置了长度。4只是给二维数组设置了长度。
作者: 神之梦    时间: 2013-5-25 21:18
第一个和第二个编译报错
后面两个等大神解释
作者: 武志红    时间: 2013-5-25 22:36
你这不是面试题类型么,一二报错,三四没意义,都定义是0个变量 数组空啦
作者: 王靖远    时间: 2013-5-26 00:01
神之梦 发表于 2013-5-25 21:18
第一个和第二个编译报错
后面两个等大神解释

第二个为什么报错啊。看着和第三个效果一样。
作者: 杨青    时间: 2013-5-26 00:09
1、2会报错,3、4运行不了啊,这不都是错的吗,到底在纠结什么那
作者: 神之梦    时间: 2013-5-26 02:32
王靖远 发表于 2013-5-26 00:01
第二个为什么报错啊。看着和第三个效果一样。

编译测试不行:L,应该是不可以这样定义吧
作者: 萧萧北    时间: 2013-5-28 17:06
刚刚编译了一下,
一二报错,三四正常。
这是数组初始化问题,也就是new int[][],这个在毕老师的视频有讲过,它的作用是为数组对象的元素分配空间。

你这前两个就缺了这个,导致不能为数组对象的元素分配空间。


我也是初学者,试着帮你改了一下,你看看是不是你想表达意思。
  1. int[][] arr1 = new int[][]{};
  2. int[][] arr2 = new int[][]{{}};
  3. int[][] arr3 = new int[0][0];
  4. int[][] arr4 = new int[0][];
复制代码

作者: 赵崇友    时间: 2013-5-28 19:36
数组初始化问题,你的格式不对;改正如下:
int[][]  arr = {};//定义一个二维数组,二维数组为空
int[][] arr = {{}};//定义一个二维数组,二维数组中有一个一维数组,一维数组为空。
int[][] arr = new int[0][0];//定义一个二维数组,二维数组为空
int[][] arr = new int[0][]; //定义一个二维数组,二维数组为空


作者: 袁梦希    时间: 2013-5-30 10:09
萧萧北 发表于 2013-5-28 17:06
刚刚编译了一下,
一二报错,三四正常。
这是数组初始化问题,也就是new int[][],这个在毕老师的视频有讲 ...

分给晚了  谅解  哥们
作者: 萧萧北    时间: 2013-5-30 18:29
袁梦希 发表于 2013-5-30 10:09
分给晚了  谅解  哥们

呵呵 版主辛苦啦
作者: Super_Class    时间: 2013-5-30 20:19

int[][]  arr = new {};
int[][] arr = new {{}};   //这两个报错是因为没有指定类型。所以无法开辟空间。
作者: 殇_心。    时间: 2013-5-31 10:16
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 李玉江    时间: 2013-5-31 23:04
海陆兄   原来你也在这里啊  
作者: 刘海陆    时间: 2013-6-1 10:22
李玉江 发表于 2013-5-31 23:04
海陆兄   原来你也在这里啊

刷分呗,还差两分




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