java数组小结

---恢复内容开始---

1、概述

  由于java是典型的静态语言,因而java中的数组也是静态的;java数组变量是引用类型的变量,(ps:java中的引用有些许像c++和c中的指针)当我们使用java数组的时候,主要有2部分操作;分别是定义引用变量(相当于c++/c中的定义一个指针(指NULL))和实例化数组对象。

  在java内存分配机制中,定义局部变量和引用变量是在相应的方法栈内存中申请一块空间;而引用变量所指向的对象(类对象、数组对象)是在堆内存中申请了内存;栈内存容易访问(直接访问),堆内存不易访问(需要借助引用变量来访问堆内存)。

2、数组初始化

  java数组的初始化分为2种;分别是静态初始化和动态初始化。

  静态初始化:

  在定义数组的时候同时对数组对象进行初始化操作;但是不可以对数组长度进行赋值

  例:int []a=new int[]{1,2,3,4};

    String []b=new String[]{"Kylin","shanshan"};

 

  动态初始化:

  定义数组的时候只对数组长度进行了赋值,并没有对具体的数组对象进行初始化(由系统默认初始化)

  例如:int []c=new int[4];

     String []d=new String[3];

  对于c数组的实例化对象的值,分别是c[0]==0  c[1]==0  c[2]==0  c[3]==0 

  d数组对象的值分别是 null  null  null;

  为什么会这样呢? 这是由于java有一套默认的初始化机制,下面介绍一下java为数组元素分配的初始值:

  整型类型(byte,short,int,double)默认初始值是0

  浮点类型(double,float)默认初始值0.0

  布尔类型(boolean)默认初始值false

  引用类型(数组、类、接口、String)默认初始值为null

  字符类型(char)默认初始值'\u0000'

3、二维数组(多维)

  初始化多为数组的时候可以先只初始化最左边维度,java允许讲多维数组当成是一维数组来处理,废话不多说,上例子。

     int [][]a=new int[3][];
        //java中二维数组的数组名代表一维数组的首地址(和c++/c一样)
        System.out.println(a.length);
        for(int i=0;i<a.length;i++)
        {
            //让一维数组的元素再指向新的一维数组;就形成了二维(多维)数组;这里可以指向很多长度不同的新数组
            a[i]=new int[4];  
        }
        for(int i=0;i<4;i++)
        {
            System.out.print(a[0][i]+" ");
        }

  运行结果如下:

  

   

    

---恢复内容结束---

posted @ 2017-10-22 15:48  Shan-KyLin  阅读(2253)  评论(0编辑  收藏  举报