黑马程序员技术交流社区

标题: 空数组如何定义,一直以为下面两种方法都可以,但是打印结果却不是的,求解释, [打印本页]

作者: 刘丰伟    时间: 2012-12-27 20:22
标题: 空数组如何定义,一直以为下面两种方法都可以,但是打印结果却不是的,求解释,
        public static void main(String[] args) {
int [] array1={};
int [] array2=null;
System.out.println(array1);
System.out.println(array2);
        }
}
打印结果如下
[I@f39b3a
null

作者: 王少雷    时间: 2012-12-27 20:34
当然啊。
nt [] array1={};
//这个已经在内在开了空间。输出当然是流。
int [] array2=null;
//这个没开空间。输出当然是没有的。
作者: 水天    时间: 2012-12-27 23:00
我觉得是这样:
int[] array1;
int[] array2;  
不过在没有进行初始化之前是不能使用的。
作者: 清水    时间: 2012-12-27 23:05
定义一个空的数组要干什么呢?
作者: 郑广昌    时间: 2012-12-28 00:47
从结果就可以看出来,第一个是在栈内存中开辟空间,array1并指向地址为[I@f39b3a的堆内存空间
第二个是在栈内存中开辟空间,但是没有指向堆,也就是堆内没有开辟空间
作者: 顾亦飞    时间: 2012-12-28 02:08
楼上的都已经回答的非常不错了.array1它已经给初始化赋值了,并且在堆内存中new了空间,然后在取得对象地址给array1,
array2你给它初始化为空了,没有指向任何引用.




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