当前位置: 首页 > 图文教程 > Java技术 > Java基础 > Java基础:小编谈java多维数组

Java基础
Java基础:小编谈代码编写格式
Java基础:小编浅谈Java程序编写规范
Java基础:小编谈Java 文件格式
Java基础:小编谈会话、实体和消息驱动Bean对象
Java基础:小编教大家十进制数转十六进制数的算法
Java基础:EJB创建并使用会话对象
Java基础:浅析Java应用中获取系统属性
Java基础:小编分享构造器与方法的异同
Java基础:小编浅谈JDBC的应用
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Java编程中更新XML文档的常用方法
用Java实现HTTP文件队列下载
Singleton在Java中的应用
Java学习从入门到精通 4方法篇
Java学习从入门到精通 2书籍篇
Java学习从入门到精通 3过程篇
[基础知识]JAVA是什么
Java学习从入门到精通 1工具篇
[基础知识]接触 Java概述

Java基础:小编谈java多维数组


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 83 ::
收藏到网摘: n/a

今天和大家探讨多维数组,本文章主要是以举例子的形式和大家讲述多维数组。

Java里可以方便地创建多维数组:

//: MultiDimArray.java

// Creating multidimensional arrays.

import java.util.*;

 

public class MultiDimArray {

  static Random rand = new Random();

  static int pRand(int mod) {

    return Math.abs(rand.nextInt()) % mod + 1;

  }

  public static void main(String[] args) {

    int[][] a1 = {

      { 1, 2, 3, },

      { 4, 5, 6, },

    };

    for(int i = 0; i < a1.length; i++)

      for(int j = 0; j < a1[i].length; j++)

        prt("a1[" + i + "][" + j +

            "] = " + a1[i][j]);

    // 3-D array with fixed length:

    int[][][] a2 = new int[2][2][4];

    for(int i = 0; i < a2.length; i++)

      for(int j = 0; j < a2[i].length; j++)

        for(int k = 0; k < a2[i][j].length;

            k++)

          prt("a2[" + i + "][" +

              j + "][" + k +

              "] = " + a2[i][j][k]);

    // 3-D array with varied-length vectors:

    int[][][] a3 = new int[pRand(7)][][];

    for(int i = 0; i < a3.length; i++) {

      a3[i] = new int[pRand(5)][];

      for(int j = 0; j < a3[i].length; j++)

        a3[i][j] = new int[pRand(5)];

    }

    for(int i = 0; i < a3.length; i++)

      for(int j = 0; j < a3[i].length; j++)

        for(int k = 0; k < a3[i][j].length;

            k++)

          prt("a3[" + i + "][" +

              j + "][" + k +

              "] = " + a3[i][j][k]);

    // Array of non-primitive objects:

    Integer[][] a4 = {

      { new Integer(1), new Integer(2)},

      { new Integer(3), new Integer(4)},

      { new Integer(5), new Integer(6)},

    };

    for(int i = 0; i < a4.length; i++)

      for(int j = 0; j < a4[i].length; j++)

        prt("a4[" + i + "][" + j +

            "] = " + a4[i][j]);

    Integer[][] a5;

    a5 = new Integer[3][];

    for(int i = 0; i < a5.length; i++) {

      a5[i] = new Integer[3];

      for(int j = 0; j < a5[i].length; j++)

        a5[i][j] = new Integer(i*j);

    }

    for(int i = 0; i < a5.length; i++)

      for(int j = 0; j < a5[i].length; j++)

        prt("a5[" + i + "][" + j +

            "] = " + a5[i][j]);

  }

  static void prt(String s) {

    System.out.println(s);

  }

} ///:~

 

用于打印的代码里使用了length,所以它不必依赖固定的数组大小。

第一个例子展示了基本数据类型的一个多维数组。我们可用花括号定出数组内每个矢量的边界:

 

int[][] a1 = {

{ 1, 2, 3, },

{ 4, 5, 6, },

};

 

每个方括号对都将我们移至数组的下一级。

第二个例子展示了用new分配的一个三维数组。在这里,整个数组都是立即分配的:

int[][][] a2 = new int[2][2][4];

但第三个例子却向大家揭示出构成矩阵的每个矢量都可以有任意的长度:

 

 

    int[][][] a3 = new int[pRand(7)][][];

    for(int i = 0; i < a3.length; i++) {

      a3[i] = new int[pRand(5)][];

      for(int j = 0; j < a3[i].length; j++)

        a3[i][j] = new int[pRand(5)];

    }

 

对于第一个new创建的数组,它的第一个元素的长度是随机的,其他元素的长度则没有定义。for循环内的第二个new则会填写元素,但保持第三个索引的未定状态——直到碰到第三个new

根据输出结果,大家可以看到:假若没有明确指定初始化值,数组值就会自动初始化成零。

可用类似的表式处理非基本类型对象的数组。这从第四个例子可以看出,它向我们演示了用花括号收集多个new表达式的能力:

 

 

    Integer[][] a4 = {

      { new Integer(1), new Integer(2)},

      { new Integer(3), new Integer(4)},

      { new Integer(5), new Integer(6)},

    };

 

第五个例子展示了如何逐渐构建非基本类型的对象数组:

 

    Integer[][] a5;

    a5 = new Integer[3][];

    for(int i = 0; i < a5.length; i++) {

      a5[i] = new Integer[3];

      for(int j = 0; j < a5[i].length; j++)

        a5[i][j] = new Integer(i*j);

    }

 

i*j只是在Integer里置了一个有趣的值。