第3章 JSP语法基础--JAVA基础知识

3.6  JAVA数组

  java语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。数组有一维数组和多维数组。
1、关于数组的特点
  1)在Java中,无论使用数组或容器,都有边界检查。如果越界操作就会得到一个RuntimeException异常。
  2)数组只能保存特定类型。数组可以保存基本类型,容器则不能。容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理。
  3)容器类只能保存对象的引用。而数组既可以创建为直接保存基本类型,也可以保存对象的引用。在容器中可以使用包装类,如Integer、Double等来实现保存基本数据类型值。
  4)对象数组和基本类型数组在使用上几乎是相同的;唯一的区别是对象数组保存的是引用,基本类型数组保存基本类型的值。

2、定义数组
2.1 一维数组
2.1.1. 一维数组的定义
  type arrayName[ ];
  类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。
  例如:
   int intArray[ ];
   Date dateArray[];
2.1.2. 一维数组的初始化
◇ 静态初始化
    int intArray[]={1,2,3,4};
    String stringArray[]={"abc", "How", "you"};
  ◇ 动态初始化
    1)简单类型的数组
    int intArray[];
    intArray = new int[5];
   2)复合类型的数组
    String stringArray[ ];
    String stringArray = new String[3];/*为数组中每个元素开辟引用空间(32位) */
    stringArray[0]= new String("How");//为第一个数组元素开辟空间
    stringArray[1]= new String("are");//为第二个数组元素开辟空间
    stringArray[2]= new String("you");// 为第三个数组元素开辟空间
2.1.3.一维数组元素的引用
  数组元素的引用方式为:
     arrayName[index]
  index为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。
例子:
public class Arrays {
 public static void main(String[] args) {
  int[] a1 = { 1, 2, 3, 4, 5 };
  for (int i = 0; i < a1.length; i++)
   System.out.println("a1[" + i + "] = " + a1[i]);
  int[] a2;
  a2 = a1;
  for (int i = 0; i < a2.length; i++)
   a2[i]++;
  System.out.println("-----after change a2------");
  for (int i = 0; i < a1.length; i++)
   System.out.println("a1[" + i + "] = " + a1[i]);
  System.out.println("-----after change a2[0]------");
  a2[0] = 333;
  System.out.println("a2[0]=" + a2[0]);
  System.out.println("a1[0]=" + a1[0]);
  System.out.println("----- a2------");
  for (int i = 0; i < a2.length; i++)
   System.out.println("a2[" + i + "] = " + a2[i]);
 }
}
输出结果:
a1[0] = 1
a1[1] = 2
a1[2] = 3
a1[3] = 4
a1[4] = 5
-----after change a2------
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6
-----after change a2[0]------
a2[0]=333
a1[0]=333
----- a2------
a2[0] = 333
a2[1] = 3
a2[2] = 4
a2[3] = 5
a2[4] = 6
2.2 多维数组
2.2.1.二维数组的定义
  type arrayName[ ][ ];
  type [ ][ ]arrayName;
2.2.2.二维数组的初始化
  ◇ 静态初始化
  int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};
  Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
  ◇ 动态初始化
  1) 直接为每一维分配空间,格式如下:
  arrayName = new type[arrayLength1][arrayLength2];
  int a[ ][ ] = new int[2][3];
  2) 从最高维开始,分别为每一维分配空间:
  arrayName = new type[arrayLength1][ ];
  arrayName[0] = new type[arrayLength20];
  arrayName[1] = new type[arrayLength21];
  …
  arrayName[arrayLength1-1] = new type[arrayLength2n];
  3) 例:
  二维简单数据类型数组的动态初始化如下,
  int a[ ][ ] = new int[2][ ];
  a[0] = new int[3];
  a[1] = new int[5];
  对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。
  而且,必须为每个数组元素单独分配空间。
  例如:
  String s[ ][ ] = new String[2][ ];
  s[0]= new String[2];//为最高维分配引用空间
  s[1]= new String[2]; //为最高维分配引用空间
  s[0][0]= new String("Good");// 为每个数组元素单独分配空间
  s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
  s[1][0]= new String("to");// 为每个数组元素单独分配空间
  s[1][1]= new String("You");// 为每个数组元素单独分配空间
2.2.3.二维数组元素的引用
     对二维数组中的每个元素,引用方式为:arrayName[index1][index2]
  例如: num[1][0];
2.2.4.二维数组举例:
例子:
public class MatrixMultiply{
  public static void main(String[] args) {
    int i, j, k;
    int a[][] = new int[2][3];
    int b[][] = {{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
    int c[][] = new int[2][4];
    for(i=0; i<2; i++)
      for(j=0; j<3; j++)
        a[i][j]=(i+1)*(j+2);
    for(i=0; i<2; i++){
      for(j=0; j<4; j++){
        c[i][j]=0;
        for(k=0; k<3; k++)
          c[i][j]+=a[i][k]*b[k][j];
        System.out.println("c["+i+"]["+j+"]="+c[i][j]);
      }
    }
    System.out.println("***MatrixA***");
    for(i=0; i<2; i++){
      for(j=0; j<3; j++)
        System.out.print(a[i][j]+" ");
      System.out.println();
    }
    System.out.println("***MatrixB***");
    for(i=0; i<3; i++){
      for(j=0; j<4; j++)
        System.out.print(b[i][j]+" ");
      System.out.println();
    }
    System.out.println("***MatrixC***");
    for(i=0; i<2; i++){
      for(j=0; j<4; j++)
        System.out.print(c[i][j]+" ");
      System.out.println();
    }
  }
}  
输出结果:
c[0][0]=25
c[0][1]=65
c[0][2]=14
c[0][3]=-65
c[1][0]=50
c[1][1]=130
c[1][2]=28
c[1][3]=-130
***MatrixA***
2 3 4
4 6 8
***MatrixB***
1 5 2 8
5 9 10 -3
2 7 -5 -18
***MatrixC***
25 65 14 -65
50 130 28 -130
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值