java数组默认值

来源:互联网 发布:民族证券软件下载 编辑:程序博客网 时间:2024/06/06 02:30

//默认值为啥有的人说有?有的说没有?其实都是对的,请看下面,只是他们没有说全

public class textDay05 {

public static void main(String[] args) {

 //第一种不算是完整方式,但是结果会怎样呢?

                 //完整方式://int[] a={0};  //与int[] a=new int[1];效果是一样的。能打印出初始值,其实这才是完整的第一种创建方式

        /*
        int b[];
        System.out.println(b);   //报错:必须初始化
        System.out.println(b[0]);//报错:必须初始化
        char[] c;
        System.out.println(c);//报错:必须初始化
        System.out.println(c[0]);//报错:必须初始化
        String[] s;
        System.out.println(s);//报错:必须初始化
        System.out.println(s[0]);//报错:必须初始化
        //此种创建方式数组是没有默认值的,必须初始化才能用。
        
        int[] a={0,4,6};
        for(int i:a){
        System.err.println(i);
        }
       */


        //第二种创建数组的方式
        /*int[] a=new int[4];
        System.err.println(a);//起始地址 [I@7150bd4d
        System.err.println(a[0]);//有初始值   0
        String[] strings=new String[4];
        System.err.println(strings);  //起始地址  [Ljava.lang.String;@6bbc4459
        System.err.println(strings[0]);//能打印出   null
        char[] c=new char[4];
        System.err.println(c);//起始地址    4框 
        System.err.println(c[0]);//有初始值  1框
        Boolean[] b=new Boolean[4];
        System.err.println(b);//起始地址    [Ljava.lang.Boolean;@152b6651 
        System.err.println(b[0]);//有初始值  null
        */

//两种方式的联系:
//int[] a={0};  //与int[] a=new int[1];效果是一样的。能打印出初始值,其实这才是完整的第一种创建方式

//扩展:我们知道类中全局变量有初始值。而局部变量没有初始值,而对于数组也实用吗?
  // 答:局部数组也是有默认值的

}


}


总结市面上的话:有的人说有默认值,有人说没有。其实按照2种完整创建数组是有默认值的。而说没有的  说的就是我的第一种不完全创建方式

增加内容:

数组的内存空间(引用数据类型的分配)

Int[] arr=new int[4]

第一步:声明数组 Int[]arr 在栈中开辟自己空间,所以没有初始值

第二部:初始化数组 new int[4] 在堆中开辟4个的4字节的内存。并把第一个空间的地址的给到在栈中的arr

0 0
原创粉丝点击