程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> JAVA入門教程:第五章

JAVA入門教程:第五章

編輯:JAVA編程入門知識
  數 組 是 有 序 數 據 的 集 合 ,數 組 中 的 每 個 元 素 具 有 相 同 的 數 據 類 型 ,可 以 用 一 個 統 一 的
  數 組 名 和 下 標 來 唯 一 地 確 定 數 組 中 的 元 素 。 數 組 有 一 維 數 組 和 多 維 數 組 ,下 面 我 們 分 別 介
  紹 。
  
  § 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(" *** 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(" *** 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(" *** Matrix C ***");
  for( i=0; i<2; i++ ){
  for( j=0; j<4; j++ )
  System.out.print(c[i][j]+" ");
  System.out.println();
  }
  }
  }
  其結果為:
  C:>java MatrixMultiply
  *** Matrix A ***
  2 3 4
  4 6 8
  *** Matrix B ***
  1 5 2 8
  5 9 10 -3
  2 7 -5 -18
  *** Matrix C ***
  25 65 14 -65
  50 130 28 -130
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved