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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田磊阳 金牌黑马   /  2013-3-19 15:36  /  2376 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田磊阳 于 2013-3-19 18:17 编辑

定义数组如果没有初始化,系统就会自动初始化为0。为什么毕老师视频中写的是null呢

点评

如果你的问题得到解决,请及时将主题改为[已解决],如果还有问题,请继续追问,谢谢  发表于 2013-3-19 16:08

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

7 个回复

倒序浏览
初始化的目的不是给数组一个0吧,0已经是具体的值了,初始化时,数组为null是合理的。
回复 使用道具 举报
初始时 是0 还是null要看定义的具体类型
如果是int 的默认是0
如果字符串的就是null

主要看数据类型  
回复 使用道具 举报
初始化,还未分配堆内存空间时,应该是null

比如定义一个String类型的变量
在成员变量的定义中,String s;等同于String s=null;
而在本地变量(方法变量)的定义中,String s;不等同于String s=null;,这时要使用s必须显式地赋值。

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
已经解决了,是我看错了,如果是一维数组在没有初始化时,输出的为0
如:
   int[ ] x = new int[3];
     System.out.println([1]);
     输出结果应该是0;

而毕老师那边是二维数组
    int[ ] [ ] x = new int[3] [ ];
     System.out.println( [0] );
输出结果为null,因为System.out.println( [0] );表示是输出二维数组中的第一个一维数组,而数组是属于引用数据类型,所以在没有初始化的时候,输出为null

另外补充一点:

int类型没有初始化,输出的结果为0
double类型没有初始化,输出的结果为0.0
float类型没有初始化,输出的结果为0.0f
boolean类型没有初始化,输出的结果为false

点评

 如果你的问题得到解决,请及时将主题改为[已解决],谢谢  发表于 2013-3-19 17:12
回复 使用道具 举报
经过学习数组初始化问题,我又发现一个知识点,那就是:把数组初始化为0是在编译时完成的
回复 使用道具 举报
1、在java语言中,数组就是一个对象,所以创建数组与创建对象一样也是用new关键字来创建。举个例子,s = new char[20];
2、数组在被创建后,其元素被系统自动初始化了。字符元素被初始化为‘\u0000’,而对于对象数组都被初始化为null。 如果你不初始化的话,在内存是找不到它的位置的。
回复 使用道具 举报
本帖最后由 顾传文 于 2013-3-19 17:34 编辑

数组的初始化时将基本数据类型初始化对应的值,如int初始化为0,boolean初始化为false。
如果是引用数据类型将每个元素初始化为null。
比如:arrayList集合底层数据结构就是数组,在new ArrayList集合的实例对象时,就会创建一个数组。根据数组的初始化功能,其实ArrayList里面已经有元素了。只是因为ArrayList有个size属性,我们没有往ArrayList添加元素时,虽然集合内部有元素,但是size属性值为0,所以我们没法取ArrayList中的第一个元素。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马