public class T {
public static void main(String args[]){
int a[]=new int[10];
System.out.println(a[6]);
}}为什么数组会有一个默认值呢?main方法中的变量不算局部变量吗?

解决方案 »

  1.   

    a是局部变量,如果你没有new int[10],那么它就是unassigned的.至于为什么a[6]有0这个值,因为数组也是对象,a[6]是a这个对象里面的内容,当你new的时候就会自动将a对象的属性初始化,跟你new其它类对象的时候,会初始化该类的成员变量是一样的道理.
      

  2.   

    对于原始类型数组,在用new构造完成而没有初始化时,JVM自动对其进行初始化。默认值:byte、short、 int、long--0 float--0.0f double--0.0 boolean--false char--'"u0000'。(无论该数组是成员变量还是局部变量)
      

  3.   

    是局部变量,只是你创建数组后,系统会给每个数组元素一个默认的值,如果是int类型,则默认值是0,如果是float型,则默认值是0.0;