[学习笔记]多维数组

来源:互联网 发布:php 访问sqlserver 编辑:程序博客网 时间:2024/05/20 18:02


        多维数组中二维数组用的比较多,三维及三维以上的使用很多,下面我就简单罗列下二维数组。

       二维数组动态初始化的语法格式:
        数据类型[][] 数组名称 = new 数据类型[第一维的长度][第二维的长度];

        例如:int[][] a;
       数据类型[][] 数组名称;

        例如:double[] a[];
        数组名称 = new 数据类型[第一维的长度][第二维的长度];

例如:char a[][];
             以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。
          

       多维数组的初始化也可以分为静态初始化(整体赋值)和动态初始化两种,其语法格式如下。


    1. 静态初始化


             以二维数组的静态初始化为例,来说明多维数组静态初始化的语法格式。示例代码如下:
                       int[][] m = {
                                {1,2,3},
                                {2,3,4}
                       };
             在二维数组静态初始化时,也必须和数组的声明写在一起。数值书写时,使用两个大括号嵌套实现,在最里层的大括号内部书写数字的值。数值和数值之间使用逗号分隔,内部的大括号之间也使用逗号分隔。
             由该语法可以看出,内部的大括号其实就是一个一维数组的静态初始化,二维数组只是把多个一维数组的静态初始化组合起来。
          
   2.动态初始化
             
     示例代码:
           byte[][] b = new byte[2][3];
           int m[][];
           m = new int[4][4];
             和一维数组一样,动态初始化可以和数组的声明分开,动态初始化只指定数组的长度,数组中每个元素的初始化是数组声明时数据类型的默认值。例如上面初始化了长度为2X3的数组b,和4X4的数组m。
             使用这种方法,初始化出的第二维的长度都是相同的,如果需要初始化第二维长度不一样的二维数组,则可以使用如下的格式:
               int n[][];
               n = new int[2][]; //只初始化第一维的长度
               //分别初始化后续的元素
               n[0] = new int[4];
               n[1] = new int[3];

             这里的语法就体现了数组的数组概念,在初始化第一维的长度时,其实就是把数组n看成了一个一维数组,初始化其长度为2,则数组n中包含的2个元素分别是n[0]和n[1],而这两个元素分别是一个一维数组。后面使用一维数组动态初始化的语法分别初始化n[0]和n[1]。


           下面附带一个Lesson类用来说明二维数组的静态初始化:
[java] view plain copy
  1. <span style="font-size:18px;">public class Lesson{  
  2.     public static void main(String [] args){  
  3.       
  4.         //二维数组的声明方式:  
  5.         //数据类型 [][] 数组名称 = new 数据类型 [长度][长度] ;  
  6.         //数据类型 [][] 数组名称 = {{123},{456}} ;  
  7.           
  8.         /* 
  9.         int [][] arr = {{123},{456}};  //定义了两行三列的二维数组并赋值 
  10.         for(int x = 0; x<arr.length; x++){  //定位行 
  11.             for(int y = 0; y<arr[x].length; y++){  //定位每行的元素个数 
  12.                 System.out.print(arr[x][y]); 
  13.             } 
  14.             System.out.println("/n"); 
  15.         } 
  16.         */  
  17.         int [][] num = new int [3][3]; //定义了三行三列的二维数组,静态初始化  
  18.         num[0][0] = 1//给第一行第一个元素赋值  
  19.         num[0][1] = 2//给第一行第二个元素赋值  
  20.         num[0][2] = 3//给第一行第三个元素赋值  
  21.           
  22.         num[1][0] = 4//给第二行第一个元素赋值  
  23.         num[1][1] = 5//给第二行第二个元素赋值  
  24.         num[1][2] = 6//给第二行第三个元素赋值  
  25.           
  26.         num[2][0] = 7//给第三行第一个元素赋值  
  27.         num[2][1] = 8//给第三行第二个元素赋值  
  28.         num[2][2] = 9//给第三行第三个元素赋值  
  29.         for(int x = 0; x<num.length; x++){  //定位行  
  30.             for(int y = 0; y<num[x].length; y++){  //定位每行的元素个数  
  31.                 System.out.print(num[x][y]);  
  32.             }  
  33.             System.out.println("/n");  
  34.         }  
  35.     }  
  36. }  
  37. //数组值arr[x][y]表示指定的是第x行第y列的值。  
  38. //在使用二维数组对象时,注意length所代表的长度,  
  39. //数组名后直接加上length(如arr.length),所指的是有几行(Row);  
  40. //指定索引后加上length(如arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目。</span>  


附加一段矩阵加法的代码:

[java] view plain copy
  1. /** 
  2.  * 封装了矩阵常用的算法 
  3.  * @author dell 
  4.  * 
  5.  */  
  6. public class Matrix {  
  7.       
  8.     /** 
  9.      * 打印指定的矩阵 
  10.      * @param c 
  11.      */  
  12.     public static void print(int[][] c){  
  13.         //打印矩阵  
  14.         for(int i=0;i<c.length;i++){  
  15.             for(int j=0;j<c.length;j++){  
  16.                 System.out.print(c[i][j]+"\t");  
  17.             }  
  18.             System.out.println();  
  19.         }  
  20.     }  
  21.       
  22.     /** 
  23.      * 矩阵加法 
  24.      * @param a 
  25.      * @param b 
  26.      * @return 
  27.      */  
  28.     public static int[][]  add(int[][] a,int[][] b){  
  29.         int[][] c = new int[a.length][a.length];  
  30.         for(int i=0;i<c.length;i++){  
  31.             for(int j=0;j<c.length;j++){  
  32.                 c[i][j] = a[i][j]+b[i][j];  
  33.             }  
  34.         }  
  35.         return c;  
  36.     }  
  37.       
  38.     public static void main(String[] args) {  
  39.         int[][]  a = {  
  40.                         {1,3,3},  
  41.                         {2,4,7},  
  42.                         {6,4,9}  
  43.                      };  
  44.         int[][]  b = {  
  45.                 {3,3,3},  
  46.                 {2,4,7},  
  47.                 {1,4,9}  
  48.         };  
  49.           
  50.         int[][] c = add(a, b);  
  51.           
  52.         print(c);  
  53.           
  54.     }  
  55. }  

        多维数组中二维数组用的比较多,三维及三维以上的使用很多,下面我就简单罗列下二维数组。

       二维数组动态初始化的语法格式:
        数据类型[][] 数组名称 = new 数据类型[第一维的长度][第二维的长度];

        例如:int[][] a;
       数据类型[][] 数组名称;

        例如:double[] a[];
        数组名称 = new 数据类型[第一维的长度][第二维的长度];

例如:char a[][];
             以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。
          

       多维数组的初始化也可以分为静态初始化(整体赋值)和动态初始化两种,其语法格式如下。


    1. 静态初始化


             以二维数组的静态初始化为例,来说明多维数组静态初始化的语法格式。示例代码如下:
                       int[][] m = {
                                {1,2,3},
                                {2,3,4}
                       };
             在二维数组静态初始化时,也必须和数组的声明写在一起。数值书写时,使用两个大括号嵌套实现,在最里层的大括号内部书写数字的值。数值和数值之间使用逗号分隔,内部的大括号之间也使用逗号分隔。
             由该语法可以看出,内部的大括号其实就是一个一维数组的静态初始化,二维数组只是把多个一维数组的静态初始化组合起来。
          
   2.动态初始化
             
     示例代码:
           byte[][] b = new byte[2][3];
           int m[][];
           m = new int[4][4];
             和一维数组一样,动态初始化可以和数组的声明分开,动态初始化只指定数组的长度,数组中每个元素的初始化是数组声明时数据类型的默认值。例如上面初始化了长度为2X3的数组b,和4X4的数组m。
             使用这种方法,初始化出的第二维的长度都是相同的,如果需要初始化第二维长度不一样的二维数组,则可以使用如下的格式:
               int n[][];
               n = new int[2][]; //只初始化第一维的长度
               //分别初始化后续的元素
               n[0] = new int[4];
               n[1] = new int[3];

             这里的语法就体现了数组的数组概念,在初始化第一维的长度时,其实就是把数组n看成了一个一维数组,初始化其长度为2,则数组n中包含的2个元素分别是n[0]和n[1],而这两个元素分别是一个一维数组。后面使用一维数组动态初始化的语法分别初始化n[0]和n[1]。


           下面附带一个Lesson类用来说明二维数组的静态初始化:
[java] view plain copy
  1. <span style="font-size:18px;">public class Lesson{  
  2.     public static void main(String [] args){  
  3.       
  4.         //二维数组的声明方式:  
  5.         //数据类型 [][] 数组名称 = new 数据类型 [长度][长度] ;  
  6.         //数据类型 [][] 数组名称 = {{123},{456}} ;  
  7.           
  8.         /* 
  9.         int [][] arr = {{123},{456}};  //定义了两行三列的二维数组并赋值 
  10.         for(int x = 0; x<arr.length; x++){  //定位行 
  11.             for(int y = 0; y<arr[x].length; y++){  //定位每行的元素个数 
  12.                 System.out.print(arr[x][y]); 
  13.             } 
  14.             System.out.println("/n"); 
  15.         } 
  16.         */  
  17.         int [][] num = new int [3][3]; //定义了三行三列的二维数组,静态初始化  
  18.         num[0][0] = 1//给第一行第一个元素赋值  
  19.         num[0][1] = 2//给第一行第二个元素赋值  
  20.         num[0][2] = 3//给第一行第三个元素赋值  
  21.           
  22.         num[1][0] = 4//给第二行第一个元素赋值  
  23.         num[1][1] = 5//给第二行第二个元素赋值  
  24.         num[1][2] = 6//给第二行第三个元素赋值  
  25.           
  26.         num[2][0] = 7//给第三行第一个元素赋值  
  27.         num[2][1] = 8//给第三行第二个元素赋值  
  28.         num[2][2] = 9//给第三行第三个元素赋值  
  29.         for(int x = 0; x<num.length; x++){  //定位行  
  30.             for(int y = 0; y<num[x].length; y++){  //定位每行的元素个数  
  31.                 System.out.print(num[x][y]);  
  32.             }  
  33.             System.out.println("/n");  
  34.         }  
  35.     }  
  36. }  
  37. //数组值arr[x][y]表示指定的是第x行第y列的值。  
  38. //在使用二维数组对象时,注意length所代表的长度,  
  39. //数组名后直接加上length(如arr.length),所指的是有几行(Row);  
  40. //指定索引后加上length(如arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目。</span>  


附加一段矩阵加法的代码:

[java] view plain copy
  1. /** 
  2.  * 封装了矩阵常用的算法 
  3.  * @author dell 
  4.  * 
  5.  */  
  6. public class Matrix {  
  7.       
  8.     /** 
  9.      * 打印指定的矩阵 
  10.      * @param c 
  11.      */  
  12.     public static void print(int[][] c){  
  13.         //打印矩阵  
  14.         for(int i=0;i<c.length;i++){  
  15.             for(int j=0;j<c.length;j++){  
  16.                 System.out.print(c[i][j]+"\t");  
  17.             }  
  18.             System.out.println();  
  19.         }  
  20.     }  
  21.       
  22.     /** 
  23.      * 矩阵加法 
  24.      * @param a 
  25.      * @param b 
  26.      * @return 
  27.      */  
  28.     public static int[][]  add(int[][] a,int[][] b){  
  29.         int[][] c = new int[a.length][a.length];  
  30.         for(int i=0;i<c.length;i++){  
  31.             for(int j=0;j<c.length;j++){  
  32.                 c[i][j] = a[i][j]+b[i][j];  
  33.             }  
  34.         }  
  35.         return c;  
  36.     }  
  37.       
  38.     public static void main(String[] args) {  
  39.         int[][]  a = {  
  40.                         {1,3,3},  
  41.                         {2,4,7},  
  42.                         {6,4,9}  
  43.                      };  
  44.         int[][]  b = {  
  45.                 {3,3,3},  
  46.                 {2,4,7},  
  47.                 {1,4,9}  
  48.         };  
  49.           
  50.         int[][] c = add(a, b);  
  51.           
  52.         print(c);  
  53.           
  54.     }  
  55. }  
0 0
原创粉丝点击