未知数据

从头看Java

   ::  :: 联系 :: 聚合  :: 管理
  28 Posts :: 0 Stories :: 10 Comments :: 0 Trackbacks

 

1. 定义

    1. 同一个数组中只能存储一种数据类型的数据

    2. 存储的数据类型可以是基本数据类型,也可以是引用数据类型

    3. 数组也是一种类型,是一种引用数据类型.所以数组在定义的时候并未分配内存.

2. 初始化

    1. 静态初始化

        由程序员显示指定每个数组元素的初始值,由系统决定需要的数组长度

    2. 动态初始化

        由系统程序员指定数组长度,由系统按照数据类型指定数组元素初始值.

    数组的初始化过程,就是为数组的数组元素分配内存空间的过程.静态初始化和动态初始化不能同时进行,

也就是不能即指定数组长度,又为数组元素指定初始值.

    如果数组是引用类型的,每个数组元素中的数据就是引用数据类型,这时的引用数据类型是保存在堆内存中

的,而每个引用数据类型又指向另一块堆内存空间,存储有效的数据.

3. 内存中的数组

int[] arrayA = new int[3];

    如上,arrayA只是一个引用变量,和创建类时一样,引用变量放在栈内存中.只有在new时,才会在堆内存中为对象分配内存空间.当将一个数组变量a,赋给数组变量b时,即将引用变量b也执行堆内存中a变量指向的对象实例,这样两个变量a和b都指向了同一个数组对象,而第二个数组则变成了垃圾,由系统垃圾回收机制在适当的时候回收这个对象所占用的内存.

    代码清单: 数组的定义和初始化

 
public class ArrayTest {
    
    public static void main(String[] args) {
        
        int[] a = {1,2,3};//静态初始化
        int[] b = new int[4];//动态初始化
        
        System.out.println("数组a的长度:"+a.length);
        for (int i=0;i<a.length;i++) {
            System.out.println("a["+i+"]="+a[i]);
        }
        
        System.out.println("数组b的长度:"+b.length);
        for (int i=0;i<b.length;i++) {
            System.out.println("b["+i+"]="+b[i]);
        }
        
        b = a;
        System.out.println("数组b的长度:"+b.length);
        
    }
 
    /*
    result:
    数组a的长度:3
    a[0]=1
    a[1]=2
    a[2]=3
    数组b的长度:4
    b[0]=0
    b[1]=0
    b[2]=0
    b[3]=0
    数组b的长度:3
    */
}

 

4. 多维数组

    java中的多维数组实质上还是一维数组.比如二维数组,数组元素也是引用,而数组元素中的引用指向一维

数组.

    代码清单: 多维数组

 
import java.util.Arrays;
 // Arrays类中包含常用的方法,包括复制数组,排序,查找,对比,填充等功能
public class ArrayTest2 {
 
    public static void main(String[] args) 
    {
        int[][] a = new int[3][2];//定义一个二维数组a
        
        // 首先a是一个长度为3的一维数组
        for (int i = 0; i < a.length ; i++ )
        {
            System.out.println(Arrays.toString(a[i]));//每个数组元素都是一个引用一维数组的引用变量
        }
        
        a[0][0] = 1;
        a[0][1] = 2;
        //在这个一维数组中的元素又是一个一维数组
        System.out.println("二维数组的元素是一维数组:");
        for (int j = 0; j < 2; j++) {
            System.out.println("a[0][" + j + "]=" + a[0][j]);
        }
        
        System.out.println("重新赋值后的二维数组:");
        for (int i = 0; i < a.length ; i++ )
        {
            System.out.println(Arrays.toString(a[i]));
        }
 
        // 二维数组的遍历
        System.out.println("二维数组的遍历:");
        for (int i=0;i<3;i++) {
            for (int j=0;j<2;j++) {
                System.out.println("a["+i+"]["+j+"]="+a[i][j]);
            }
        }
    }
    /*
    [0, 0]
    [0, 0]
    [0, 0]
    二维数组的元素是一维数组:
    a[0][0]=1
    a[0][1]=2
    重新赋值后的二维数组:
    [1, 2]
    [0, 0]
    [0, 0]
    二维数组的遍历:
    a[0][0]=1
    a[0][1]=2
    a[1][0]=0
    a[1][1]=0
    a[2][0]=0
    a[2][1]=0
    */
    
}
posted on 2009-01-12 23:07 wangjc 阅读(368) 评论(0)  编辑  收藏 所属分类: 从头看Java

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问