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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Michael_xpd 于 2013-9-7 19:36 编辑

求指点,小弟是菜鸟

PrintArray.png (21.2 KB, 下载次数: 6)

为什么我这样为数组初始化赋值不行?

为什么我这样为数组初始化赋值不行?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

11 个回复

倒序浏览
数组是引用类型变量   定义变量时,仅仅表示一个引用变量(也就是定义了一个指针),这个引用变量还未指向任何有效的内存,因此定义数组是不能指定数组的长度。
附加的:
而且由于定义数组仅仅只是定义了一个引用变量,并还未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,所以,这个数组也不能使用,要对数组进行初始化才可用。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
视频坚持看完,回过头来,问题也会变简单的,首先在创建一个二维数组的时候,你定义了二维数组长度为3,也就是说,这个二维数组里面有三个元素,每个元素是一个一维数组,而这些一维数组的长度为0或者理解为空null,既然是长度为0的数组,那就肯定不能赋值了,因为数组长度是固定的,不能添加超过数组长度的元素,所以编译会失败

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
张聪珉 发表于 2013-9-7 18:26
视频坚持看完,回过头来,问题也会变简单的,首先在创建一个二维数组的时候,你定义了二维数组长度为3,也 ...

嗯,非常感谢。那我要怎么定义二维数组,我才能为一维数组赋值呢?我的下面的分别为一维数组赋值的语句才能通过编译呢?
回复 使用道具 举报
Michael_xpd 发表于 2013-9-7 18:34
嗯,非常感谢。那我要怎么定义二维数组,我才能为一维数组赋值呢?我的下面的分别为一维数组赋值的语句才 ...

如果你的数组长度是固定的,就可以在创建的时候指定数组长,如果不固定,那就可以这样创建int[][] arr={{1,2,3},{4,5},{6}}

回复 使用道具 举报
  1. class PrintArray
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[][] arr=new int [3][];
  6.                 arr[0]=new int[]{1,2,3};
  7.                 arr[1]=new int[]{4};
  8.                 arr[2]=new int[]{5,6};
  9.                 for(int x=0;x<arr.length;x++)
  10.                 {
  11.                         for(int y=0;y<arr[x].length;y++)
  12.                         {
  13.                                 System.out.print(arr[x][y]+",");
  14.                         }
  15.                 }
  16.                
  17.                
  18.                 System.out.println("这就是一个二维数组!");
  19.         }
  20. }
复制代码
要这样写的啊,楼主。没有你那种初始化的方式的。你需要为那三个一维数组开辟内存空间的。这种定义二维数组的方式是动态的初始化。
回复 使用道具 举报
其实一维二维数组可以看做是一种类,你在初始化的时候就像new一个对象。所以你的防辐射应该加上 int []
回复 使用道具 举报
辛春鹏 发表于 2013-9-7 18:58
要这样写的啊,楼主。没有你那种初始化的方式的。你需要为那三个一维数组开辟内存空间的。这种定义二维数组 ...

嗯嗯!知道了!谢谢!
回复 使用道具 举报
Fire_Leg 发表于 2013-9-7 19:08
其实一维二维数组可以看做是一种类,你在初始化的时候就像new一个对象。所以你的防辐射应该加上 int [] ...

嗯嗯!谢谢!
回复 使用道具 举报
张聪珉 发表于 2013-9-7 18:57
如果你的数组长度是固定的,就可以在创建的时候指定数组长,如果不固定,那就可以这样创建int[][] arr={{ ...

嗯嗯,这种方法我知道一定能行,谢谢哈!
回复 使用道具 举报
你其中的arr[0]相当于一个一位数组,不是二维数组的书写格式,若当一位数组使用且没有定义,无法通过编译!!
回复 使用道具 举报
你其中的arr[0]相当于一个一位数组,不是二维数组的书写格式,若当一位数组使用且没有定义,无法通过编译!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马