黑马程序员技术交流社区
标题:
数组的初始化问题
[打印本页]
作者:
田磊阳
时间:
2013-3-19 15:36
标题:
数组的初始化问题
本帖最后由 田磊阳 于 2013-3-19 18:17 编辑
定义数组如果没有初始化,系统就会自动初始化为0。为什么毕老师视频中写的是null呢
5A${][`3(7AM~X746I53$(F.jpg
(53.45 KB, 下载次数: 104)
下载附件
2013-3-19 15:36 上传
作者:
VOIDMAIN
时间:
2013-3-19 15:54
初始化的目的不是给数组一个0吧,0已经是具体的值了,初始化时,数组为null是合理的。
作者:
丁一
时间:
2013-3-19 16:00
初始时 是0 还是null要看定义的具体类型
如果是int 的默认是0
如果字符串的就是null
主要看数据类型
作者:
续圆凯
时间:
2013-3-19 16:02
初始化,还未分配堆内存空间时,应该是null
比如定义一个String类型的变量
在成员变量的定义中,String s;等同于String s=null;
而在本地变量(方法变量)的定义中,String s;不等同于String s=null;,这时要使用s必须显式地赋值。
作者:
田磊阳
时间:
2013-3-19 16:26
已经解决了,是我看错了,如果是一维数组在没有初始化时,输出的为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 16:31
经过学习数组初始化问题,我又发现一个知识点,那就是:把数组初始化为0是在编译时完成的
作者:
张亚青
时间:
2013-3-19 17:08
1、在java语言中,数组就是一个对象,所以创建数组与创建对象一样也是用new关键字来创建。举个例子,s = new char[20];
2、数组在被创建后,其元素被系统自动初始化了。字符元素被初始化为‘\u0000’,而对于对象数组都被初始化为null。 如果你不初始化的话,在内存是找不到它的位置的。
作者:
顾传文
时间:
2013-3-19 17:29
本帖最后由 顾传文 于 2013-3-19 17:34 编辑
数组的初始化时将基本数据类型初始化对应的值,如int初始化为0,boolean初始化为false。
如果是引用数据类型将每个元素初始化为null。
比如:arrayList集合底层数据结构就是数组,在new ArrayList集合的实例对象时,就会创建一个数组。根据数组的初始化功能,其实ArrayList里面已经有元素了。只是因为ArrayList有个size属性,我们没有往ArrayList添加元素时,虽然集合内部有元素,但是size属性值为0,所以我们没法取ArrayList中的第一个元素。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2