public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a.length);
}
}
输出的是0,因为我定义的是长度为0的数组。public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a);
}
}
在把程序稍微变一下。
输出的是内存的地址,说明在内存中已经有值和空间了,已经初始化了,但是我明明长度是0阿,有地址就意味着里面有值。。
在变一下:
public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a[0]);
}
}
程序报错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 0 at Test.Array.main(Test_Array.java:6)
现在程序报错,这也是我预料之中。。
有地址存在,但是值存到那了?
或者是我的推论都是错的????
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a.length);
}
}
输出的是0,因为我定义的是长度为0的数组。public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a);
}
}
在把程序稍微变一下。
输出的是内存的地址,说明在内存中已经有值和空间了,已经初始化了,但是我明明长度是0阿,有地址就意味着里面有值。。
在变一下:
public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
System.out.println(a[0]);
}
}
程序报错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 0 at Test.Array.main(Test_Array.java:6)
现在程序报错,这也是我预料之中。。
有地址存在,但是值存到那了?
或者是我的推论都是错的????
public class Test_Array
{
public static void main(String args[])
{
int[] a = new int[0];
int[] b;
b = a;
System.out.println(a);
System.out.println(b);
}
}
输出的结果:[I@35ce36
[I@35ce36
说明这里面传递的是引用,这个引用是做什么的???
引用指向谁?
--------------------------------------------------------
是分配空间,但是也伴随的着初始化,初始化的值是多少???
{
public static void main(String args[])
{
//String str = new String();
int[] a = new int[6];
//或者是int[] a = {1,2,3};
//int[] b;
//b = a;
System.out.println(a);
//System.out.println(str);
}
}
这个程序的结果是一样:[I@35ce36
说明,数组为空或者是有值,不影响此程序的输出结果。
我刚才查资料,看到这么一句话:无论是哪种类型的数组,数组标识其实只是一个引用,指向堆中创建的一个真实对象,这个数组对象用以指向其他对象的引用。
有担绕口,但是可以确定,即使数组为空,他也有标识。
这可能就是这个问题的解释。
现在有个问题,刚也差了基于数组的队列,也没有没有查出来关于这个引用到引到什么地方的解决方案
也查了老师上学期给的ppt,查了数组内部的存储机制,分4层。
如下:
Data:Code:Stack:存的是数组里面第一个元素的引用Heap:数组里面的数据或者是还有这样一种解释,就是在调用System.out.println()方法的时候,自动寻找位置,这可能是JAVA 虚拟机的一种对这种情况的解释方式。
也不清楚。
这个问题谁能够给个答案??现在几乎可以确定,是个引用,但是这个引用到什么地方?
-----------------------------------------------------------------------------
这个解释是目前最可能是解释,但是程序输出来的引用指向什么地方?
我想问,如果了解JAVA的虚拟机是怎么工作的,请各位推荐一本书吧。
哈哈,谢了
也查了老师上学期给的ppt,查了数组内部的存储机制,分4层。
如下:
Data:Code:Stack:存的是数组里面第一个元素的引用,接下来是第2个元素的引用,等等。Heap:数组里面的数据
kevinliuu(@。@) 再给几个解决方案阿