Java中数组的声明与使用

数组

数组是以通用名称引用的一组类型相同的变量。可以创建任意类型的数组,并且数组可以是一维或多维的。

一维数组

   一维数组本质上是一连串类型相同的变量。为了创建数组,首先必须创建期望类型的数组变量。例如,下面的语句声明了一个名为month_days的数组,该数组的类型是“int数组”:

int month_days[];

   尽管这个声明确立了month_days是数组变量的事实,但是这个数组实际上并不存在。为了将month_days连接到一个实际的、物理的整数数组,必须使用new分配一个数组,并将之赋给month_days。使用new分配一个数组,必须指定要分配元素的类型和数量。通过new分配的数组,其元素会被自动初始化为0(对于数值类型)、false(对于布尔类型)或null(对于引用类型)。下面的demo分配了一个具有12个元素的整数数组,并将该数组链接到month_days:

month_days = new int[12];

   执行完这条语句之后,month_days将指向具有12个整数的数组。此外数组中的所有元素都被初始化为0。
   当声明数组时,可以对其进行初始化,这一过程与初始化简单类型的过程相同。Java会自动创建足够大的数组,以容纳在数组初始化器中指定的元素的数量。这时不需要使用new运算符:

int month_days[]={31,28,31,30,31,30,31,31,30,31,30,31};
总结获得一个数组的步骤

1、声明一个期望数组类型的变量。
2、使用new分配容纳该数组的内存,并将其赋给数组变量。
一般将数组变量的声明和数组本身的分配组合起来:

int month_days[] = new int[12];
多维数组

   在Java中多维数组实际上是数组的数组。为了声明多维数组变量,需要使用另外一组方括号指定每个额外的索引。例如,下面声明了一个名为twoA的二维数组:

int twoA[][] = new int[4][5];

   这条语句分配了一个4x5的数组,并将之赋给twoA。在内部,这个矩阵是作为int数组的数组实现的。

右边索引决定列
左索引决定行[0][0][0][1][0][2][0][3][0][4]
[1][0][1][1][1][2][1][3][1][4]
[2][0][2][1][2][2][2][3][2][4]
[3][0][3][1][3][2][3][3][3][4]
   当为多维数组分配内存时,只需要为第一维(最左边的)分配内存。可以单独为余下的为分配内存:
int twoA[][] = new int[4][];
twoA[0] = new int[5];
twoA[1] = new int[5];
twoA[2] = new int[5];
twoA[3] = new int[5];

   多维数组实际上是数组的数组,可以控制每个数组的长度。下面的demo创建了一个二维数组,其中第二维的长度不是相同的:

int twoA[][] = new int[4][];
twoA[0] = new int[1];
twoA[1] = new int[2];
towA[2] = new int[3];
towA[3] = new int[4];

这个程序创建的数组看起来如下:

[0][0]
[1][0][1][1]
[2][0][2][1][2][2]
[3][0][3][1][3][2][3][3]
二维数组demo:
public class Matrix {
    public static void main(String[] args) {
        double m[][]={
                {0*0,1*0,2*0,3*0},
                {0*1,1*1,2*1,3*1},
                {0*2,1*2,2*2,3*2},
                {0*3,1*3,2*3,3*3}
        };
        int i,j;
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                System.out.print(m[i][j]+" ");
            }
            System.out.println();
        }
        /*
        输出结果:
        0.0 0.0 0.0 0.0
        0.0 1.0 2.0 3.0
        0.0 2.0 4.0 6.0
        0.0 3.0 6.0 9.0 
         */
    }
}

三维数组demo:

class ThreeAMatrix {
    public static void main(String[] args) {
      int threeA[][][]=new int[3][4][5];
      int i,j,k;
      for(i=0;i<3;i++)
          for(j=0;j<4;j++)
              for(k=0;k<5;k++)
                  threeA[i][j][k] = i * j * k;
      for(i=0;i<3;i++)   {
          for(j=0;j<4;j++){
              for(k=0;k<5;k++){
                  System.out.print(threeA[i][j][k]+" ");
              }
              System.out.println();
          }
          System.out.println();
        }
      /*
      输出结果:
      0 0 0 0 0 
      0 0 0 0 0 
      0 0 0 0 0 
      0 0 0 0 0 
    
      0 0 0 0 0 
      0 1 2 3 4 
      0 2 4 6 8 
      0 3 6 9 12 
    
      0 0 0 0 0 
      0 2 4 6 8 
      0 4 8 12 16 
      0 6 12 18 24 
       */
    }
}
总结另一种数组声明语法

另一种用于声明数组的形式:方括号位于类型限定符之后,而不是位于数组变量名的后面。例如下面两个声明是等价的:

int a1[] = new int[3];
int[] a2 = new int[3];

下面的声明也是等价的:

char twoA1[][] = new char[3][4];
char[][] twoA2 = new char[3][4];

当同时声明多个数组时,这种形式可以提供便利,下面两个声明是等价的:

int[] nums,nums2,nums3;
int nums[],nums2[],nums3[];

当将数组指定为方法的返回类型时,这种数组声明方式也是有用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值