注册
 找回密码
 注册
江西广告网
查看: 289|回复: 0
打印 上一主题 下一主题

JAVA入门教程:数组

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-27 17:41:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  数 组 是 有 序 数 据 的 集 合 ,数 组 中 的 每 个 元 素 具 有 相 同 的 数 据 类 型 ,可 以 用 一 个 统 一 的   数 组 名 和 下 标 来 唯 一 地 确 定 数 组 中 的 元 素 。 数 组 有 一 维 数 组 和 多 维 数 组 ,下 面 我 们 分 别 介   绍 。      § 5.1 一 维 数 组      一 、 一 维 数 组 的 定 义      一 维 数 组 的 一 、 一 维 数 组 的 定 义      一 维 数 组 的 定 义 方 式 为 :      type arrayName[];      其 中 类 型 (type)可 以 为 Java中 任 意 的 数 据 类 型 ,包 括 简 单 类 型 和 组 合 类 型 (见 2.1),数 组 名   arrayName为 一 个 合 法 的 标 识 符 ,[]指 明 该 变 量 是 一 个 数 组 类 型 变 量 。 例 如 :      int intArray[];      声 明 了 一 个 整 型 数 组 ,数 组 中 的 每 个 元 素 为 整 型 数 据 。 与 C 、 C 不 同 ,Java在 数 组 的 定   义 中 并 不 为 数 组 元 素 分 配 内 存 ,因 此 []中 不 用 指 出 数 组 中 元 素 的 个 数 ,即 数 组 长 度 ,而 且 对 于   如 上 定 义 的 一 个 数 组 是 不 能 访 问 它 的 任 何 元 素 的 。 我 们 必 须 为 它 分 配 内 存 空 间 ,这 时 要 用   到 运 算 符 new,其 格 式 如 下 :      arrayName = new type[arraySize];      其 中 ,arraySize指 明 数 组 的 长 度 。 如 :      intArray = new int[3];      为 一 个 整 型 数 组 分 配 3个 int型 整 数 所 占 据 的 内 存 空 间 。      通 常 ,这 两 部 分 可 以 合 在 一 起 ,格 式 如 下 :      type arrayName = new type [arraySize];      例 如 :      int intArray = new int[3];      二 、 一 维 数 组 元 素 的 引 用      定 义 了 一 个 数 组 ,并 用 运 算 符 new为 它 分 配 了 内 存 空 间 后 ,就 可 以 引 用 数 组 中 的 每 一 个   元 素 了 。 数 组 元 素 的 引 用 方 式 为 :      arrayName[index]      其 中 :index为 数 组 下 标 ,它 可 以 为 整 型 常 数 或 表 达 式 。 如 a[3] ,b[i](i为 整 型 ),c[6*I]等 。 下 标   从 0开 始 ,一 直 到 数 组 的 长 度 减 1。 对 于 上 面 例 子 中 的 in- tArray数 组 来 说 ,它 有 3个 元 素 ,分 别 为 :      intArray[0],intArray[1], intArray[2]。 注 意 :没 有 intArray[3]。      另 外 ,与 C、 C 中 不 同 ,Java对 数 组 元 素 要 进 行 越 界 检 查 以 保 证 安 全 性 。 同 时 ,对 于 每 个   数 组 都 有 一 个 属 性 length指 明 它 的 长 度 ,例 如 :intArray.length指 明 数 组 intArray的 长 度 。      例5.1   public class ArrayTest{   public static void main( String args[] ){   int i;   int a[]=new int[5];   for( i=0; i<5; i )   a[i]=i;   for( i=a.length-1; i>=0; i-- )   System.out.println("a[" i "] = " a[i]);   }   }   运行结果如下:   C:\>java ArrayTest   a[4] = 4   a[3] = 3   a[2] = 2   a[1] = 1   a[0] = 0      该 程 序 对 数 组 中 的 每 个 元 素 赋 值 ,然 后 按 逆 序 输 出 。      三 、 一 维 数 组 的 初 始 化      对 数 组 元 素 可 以 按 照 上 述 的 例 子 进 行 赋 值 。 也 可 以 在 定 义 数 组 的 同 时 进 行 初 始 化 。   例 如 :      int a[] = {1,2,3,4,5};      用 逗 号 (,)分 隔 数 组 的 各 个 元 素 ,系 统 自 动 为 数 组 分 配 一 定 的 空 间 。      与 C中 不 同 ,这 时 Java不 要 求 数 组 为 静 态 (static)。      四 、 一 维 数 组 程 序 举 例 :                     例5.2 Fibonacci数列      Fibonacci数 列 的 定 义 为 :      F1 = F2 = 1, Fn = Fn-1 Fn-2 (n>=3)      public class Fibonacci{      public static void main( String args[] ){      int i;      int f[]=new int[10];      f[0]=f[1]=1;      for( i=2; i<10; i )      f[i]=f[i-1] f[i-2];      for( i=1; i<=10; i )      System.out.println("F[" i "]= " f[i-1]);      }      }      运 行 结 果 为 :      C:\>java Fibonacci      F[1]= 1      F[2]= 1      F[3]= 2      F[4]= 3      F[5]= 5      F[6]= 8      F[7]= 13      F[8]= 21      F[9]= 34      F[10]= 55      例 5.3冒 泡 法 排 序 (从 小 到 大 )      冒 泡 法 排 序 对 相 邻 的 两 个 元 素 进 行 比 较 ,并 把 小 的 元 素 交 换 到 前 面 。      public class BubbleSort{      public static void main( String args[] ){      int i,j;      int intArray[]={30,1,-9,70,25};      int l=intArray.length;      for( i=0; i<l-1; i )      for( j=i 1; j<l; j )      if( intArray[i]>intArray[j] ){      int t=intArray[i];      intArray[i]=intArray[j];      intArray[j]=t;      }      for( i=0; i<l; i )      System.out.println(intArray[i] " ");      }      }      运 行 结 果 为 :      C:\>java BubbleSort      -9      1      25      30      70]@@@      § 5.2 多 维 数 组      与 C、 C 一 样 ,Java中 多 维 数 组 被 看 作 数 组 的 数 组 。 例 如 二 维 数 组 为 一 个 特 殊 的 一 维   数 组 ,其 每 个 元 素 又 是 一 个 一 维 数 组 。 下 面 我 们 主 要 以 二 维 数 组 为 例 来 进 行 说 明 ,高 维 的   情 况 是 类 似 的 。      一 、 二 维 数 组 的 定 义      二 维 数 组 的 定 义 方 式 为 :      type arrayName[][];      例 如 :      int intArray[][];      与 一 维 数 组 一 样 ,这 时 对 数 组 元 素 也 没 有 分 配 内 存 空 间 ,同 样 要 使 用 运 算 符 new来 分 配   内 存 ,然 后 才 可 以 访 问 每 个 元 素 。      对 高 维 数 组 来 说 ,分 配 内 存 空 间 有 下 面 几 种 方 法 :      1 直 接 为 每 一 维 分 配 空 间 ,如 :      int a[][] = new int[2][3];      2 从 最 高 维 开 始 ,分 别 为 每 一 维 分 配 空 间 ,如 :      int a[][] = new int[2][];      a[0] = new int[3];      a[1] = new int[3];      完 成 1中 相 同 的 功 能 。 这 一 点 与 C、 C 是 不 同 的 ,在 C、 C 中 必 须 一 次 指 明 每 一 维 的   长 度 。      二 、 二 维 数 组 元 素 的 引 用      对 二 维 数 组 中 每 个 元 素 ,引 用 方 式 为 :arrayName[index1][index2]      其 中 index1、 index2为 下 标 ,可 为 整 型 常 数 或 表 达 式 ,如 a[2][3]等 。 同 样 ,每 一 维 的 下 标 都 从   0开 始 。      三 、 二 维 数 组 的 初 始 化      有 两 种 方 式 :      1 直 接 对 每 个 元 素 进 行 赋 值 。      2 在 定 义 数 组 的 同 时 进 行 初 始 化 。      如 :int a[][]={{2,3},{1,5},{3,4}};      定 义 了 一 个 3× 2的 数 组 ,并 对 每 个 元 素 赋 值 。      四 、 二 维 数 组 举 例 :      例 5.4 矩 阵 相 乘      两 个 矩 阵 Am× n、 Bn× l相 乘 得 到 Cm× l,每 个 元 素 Cij =  aik*bk j (i=1..m,n=1..n)      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("\n*** Matrix A ***");   for( i=0; i<2; i ){   for( j=0; j<3; j )   System.out.print(a[i][j] " ");   System.out.println();   }   System.out.println("\n*** Matrix B ***");   for( i=0; i<3; i ){   for( j=0; j<4; j )   System.out.print(b[i][j] " ");   System.out.println();   }   System.out.println("\n*** Matrix C
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表